Hỏi đáp

Sự Khác Biệt Giữa Executescalar Là Gì ? Sqlcommand Truy Vấn Và Cập Nhật Dữ Liệu

Tạo đối tượng người dùng SqlCommand trong C# để truy vấn và update tới CSDL SQL Server, tiến hành lệnh với những phương thức ExecuteNonQuery, ExecuteScalar, ExecuteReader

Lớp SqlCommand – Khởi tạo đối tượng người dùng SqlCommand

Lớp SqlCommand triển khai từ DbCommand cho phép tạo ra đối tượng người dùng mà từ đó mà thậm chí thi hành những lệnh SQL tương tác với MS SQL Server như những mệnh đề UPDATE|INSERT|CREATE TABLE|SELECT …

Chúng ta đang xem: Executescalar là gì

cũng như cho phép thi hành những hàm, những stored procedure của Database.

Ghi chú: Nếu sử dụng MySQL thì đối tượng người dùng triển khai DbCommand là MySqlCommand, với cách sử dụng một cách tương tự.

Để nhanh gọn lẹ với một MS SQL Server kèm dữ liệu mẫu, hãy sử dụng Docker và thực hiệntheo hướng dẫn: MS SQL Server trên Docker

Để tạo và thi hành được SqlCommand thì quan trọng lập cho nó câu lệnh SQL (truy vấn), và những tham số cho lệnh SQL đó, đồng thời cùng lúc phải thiết lập thông tin kết nối tới SQL Server SqlConnection vào đối tượng người dùng SqlCommand.

Xem thêm: Giải Đáp Đầu Số 093 Là Của Mạng Nào, Đầu Số 093 Mạng Gì

Ví dụ, khởi tạo SqlCommand – thiết lập ngay câu query và kết nối

var cmd = new SqlCommand(queryString, connection);Mà thậm chí khởi tạo SqlCommand sau đó mới thiết lập những thông số kỹ thuật (câu truy vấn, kết nối và những tham số …) rồi sau đó tiến hành SqlCommand (tiến hành truy vấn SQL)

“Data Source=localhost,1433; Initial Catalog=xtlab; User ID=SA;Password=Password123”; var connection = new SqlConnection(sqlconnectstring); connection.Open(); // Tạo đối tượng người dùng DbCommand using var command = new SqlCommand(); command.Connection = connection; // select, insert, update, delete command.CommandText = “Mệnh đề truy vấn SQL”; // Tiến hành những câu truy vấn, đọc thành tựu // … // … connection.Close(); Từ đối tượng người dùng SqlConnection cũng mà thậm chí tạo ngay đối tượng người dùng SqlCommand gắn với kết nối đó:

using (var cmd = connection.CreateCommand()) { cmd.CommandText = queryString; // tiến hành lệnh … } Như vậy để thi hành lệnh SQL với SqlCommand, thì cần phải có một kết nối trước (SqlConnection), rồi tạo ra đối tượng người dùng SqlCommand, gán cho nó kết nối, câu lệnh SQL sau đó mới thi hành được. Để thi hành, gọi một trong những phương thức như ExecuteScalar, ExecuteNonQuery, ExecuteReader … trình diễn ở mục phía dưới

Thiết lập những tham số cho SqlCommmand

Những câu lệnh SQL mà thậm chí viết chứa tên tham số trong nó, sau đó giá trị thực của tham số này được SqlCommand gán thay vào để sở hữu mệnh đề SQL thực sự. Tham số trong chuỗi câu lệnh SQL ký hiệu là
tenthamso
(nhớ với ký hiệu
), ví dụ:

string queryString = “SELECT DanhmucID, TenDanhMuc, MoTa FROM Danhmuc where DanhmucID >
DanhmucID”; Thì sẽ có một tham số tên
DanhmucID: Giá trị thực sự của tham số này thay thế bởi giá trị của của một đối tượng người dùng kiểu SqlParameter. Tập hợp những tham số này lưu trong thuộc tính Parameters của SqlCommand

command.Parameters.AddWithValue(“
Danhmuc của câu truy vấn, kết quảcâu truy vấn là

“SELECT DanhmucID, TenDanhMuc, MoTa FROM Danhmuc where DanhmucID > 5″Ngoài ra mà thậm chí khởi tạo một SqlParameter và thêm vào, ví dụ:

var danhmuc = new SqlParameter(“
DanhmucID”, 5); // Tạo tham sốcommand.Parameters.Add(danhmuc); // Thêm vào SqlCommandvar danhmuc = new SqlParameter(“
DanhmucID”, 5); // Tạo tham sốcommand.Parameters.Add(danhmuc); // Thêm vào SqlCommandHoặc cụ thể hơn như

// Khởi tạo với không sử dụng kiểu dữ liệuvar danhmuc = new SqlParameter(“
DanhmucID”, SqlDbType.Int);// Gán gái trị vào tham sốdanhmuc.Value = 5;// Thêm vào SqlCommandcommand.Parameters.Add(danhmuc);

Những cách thi hành SqlCommand và lấy thành tựu truy vấn

Với những phương thức không giống nhau để thi hành SqlCommand tùy từng ngữ cảnh với mục đích không giống nhau, gồm với những phương thức như:

ExecuteNonQuery() thi hành truy vấn – ko cần trả về dữ liệu gì, thích nghi tiến hành những truy vấn như Update, Delete … ExecuteReader() thi hành lệnh – trả về đối tượng người dùng giao diện IDataReader như SqlDataReader, từ đó đọc được dữ liệu trả về ExecuteScalar() thì hành và trả về một giá trị duy nhất – ở hàng trước hết, cột trước hết

Sau phía trên vận dụng gọi những hàm trên

Thi hành SqlCommand bằng phương thức ExecuteScalar()

Nếu thi hành SqlCommand bằng phương thức ExecuteScalar thì nó sẽ thi hành câu lệnh SQL và trả về 1 giá trị là cột trước hết của dòng trước hết. (Cho dù câu lệnh SQL thực tiễn trả về tập trung quả nhiều dòng nhiều cột). Lưu ý: giá trị với độ dài tối đa 2033 ký tự

Ví dụ sau sẽ chèn một dòng mới vào bảng và trả về giá trị định danh của dòng mới chèn vào (ID). Ở phía trên chèn một Shipper mới thông tin HoTen và Sodienthoai vào bảng Shippers

// Tạo đối tượng người dùng DbCommandusing var command = new SqlCommand();command.Connection = connection;// Câu truy vấn gồm: chèn dữ liệu vào và lấy định danh(Primary key) mới chèn vàostring queryString =
Sodienthoai); SELECT CAST(scope_identity() AS int)”;command.CommandText = queryString;command.Parameters.AddWithValue(“
Sodienthoai”, 123456);var ShipperID = command.ExecuteScalar(); // Thi hành SQL trả về giá trị đầu tiênConsole.WriteLine($”Thêm mới Shipper, ID = {ShipperID}”);

Thi hành với ExecuteNonQuery

Thi hành SqlCommand bằng phương thức ExecuteNonQuery nó chỉ trả về thành tựu là số dòng dữ liệu bị tác động (số dòng xóa, số dòng update …). Thường sử dụng cách này để thi hành những truy vấn UPDATE, INSERT, DELETE. Tuy nhiên, nếu là gọi Procedure thì sẽ xuất hiện thành tựu trả về.

// Tạo kết nốivar sqlconnectstring =
“Data Source=localhost,1433; Initial Catalog=xtlab; User ID=SA;Password=Password123”;var connection = new SqlConnection(sqlconnectstring);connection.Open();// Tạo đối tượng người dùng SqlCommandusing var command = new SqlCommand();command.Connection = connection;// Câu truy vấn gồm: chèn dữ liệu vào và lấy định danh(Primary key) mới chèn vàostring queryString =
ShipperID”, 4);var rows_affected = command.ExecuteNonQuery();Console.WriteLine($”Số dòng tác động = {rows_affected}”);connection.Close();

Thi hành với ExecuteReader

Thi hành SqlCommand với phương thức thì nó sẽ tạo ra đối tượng người dùng SqlDataReader được mở sẵn, từ đối tượng người dùng đó giúp đọc từng dòng thành tựu trả về.

Một vài phương thức trong SqlDataReader

SqlDataReader.HasRows() cho biết thêm với dòng dữ liệu nào ko SqlDataReader.Read() nạp dữ liệu dòng tiếp theo, nếu trả về true là với dòng dữ liệu nạp về thành công, nếu false là đã mất dữ liệu nạp về. Sau lúc gọi phương thực này, thì những cột của dòng mà thậm chí đọc bằng những toán tử , hoặc những hàm đọc dữ liệu như .GetInt32(cột), .GetString(cột) … SqlDataReader.Close() đóng Reader sau lúc đọc xong dữ liệu

Những câu lệnh SELECT mà thậm chí sử dụng cách náy

readCate.cs

// Tạo kết nốivar sqlconnectstring =
“Data Source=localhost,1433; Initial Catalog=xtlab; User ID=SA;Password=Password123”;var connection = new SqlConnection(sqlconnectstring);connection.Open();// Tạo đối tượng người dùng SqlCommandusing var command = new SqlCommand();command.Connection = connection;// Câu truy vấn lấy danh mụcstring queryString =
“SELECT DanhmucID, TenDanhMuc, MoTa FROM Danhmuc”;command.CommandText = queryString;// Thi hành truy vấn trả về SqlReaderusing var reader = command.ExecuteReader();// Kiểm tra với thành tựu trả vềif (reader.HasRows){ // Đọc từng dòng tập trung quả while (reader.Read()) { var danhmuc = reader.GetInt32(0); var tendanhmuc = readervàlt;”TenDanhMuc”>; var mota = reader.GetString(“Mota”); Console.WriteLine($”{danhmuc, 4} – {tendanhmuc, -20} – {mota}”); }}else{ Console.WriteLine(“Không tồn tại dữ liệu trả về”);}connection.Close(); Ngoài ra lúc với được đối tượng người dùng SqlDataReader, mà thậm chí lấy toàn bộ thành tựu trả về của SqlCommand đưa vào DataTable

//…SqlCommand command = new SqlCommand(“SELECT DanhmucID, TenDanhMuc FROM Danhmuc;”, connection);using (SqlDataReader reader = command.ExecuteReader()){ DataTable myTable = new DataTable(); if (reader.HasRows) { myTable.Load(reader); } else { //No rows }}//…

ExecuteXmlReader

Thi hành SqlCommand với phương thức thì nó sẽ tạo ra đối tượng người dùng System.Xml.XmlReader, từ đối tượng người dùng đó giúp đọc từng dòng thành tựu trả về theo cấu trúc XML.

Xem thêm: the escapist 2

Gọi Procedure của DB

Mặc định SqlCommand sẽ coi nội dung trong thuộc tính CommandText là câu lệnh SQL vì thế nó đã thiết lập CommandType bằng CommandType.Text (xem ví dụ trên). Nếu muốn gọi tới Procedure thì thiết lập nó bằng CommandType.StoredProcedure.

Chúng ta mà thậm chí chạy câu lệnh T-SQL để tạo ra một StoredProcedure mẫu mang tên getproduct với một tham số
idENDThực hành gọi thủ tục SQL Server

callProcedure.cs

//…public static void CallStoredProcedure(){ string sqlconnectStr = “Data Source=localhost,1433;Initial Catalog=xtlab;User ID=SA;Password=Password123”; SqlConnection connection = new SqlConnection(sqlconnectStr); connection.Open(); // Thi hành thủ tục PROCEDURE .(
id int) trong MS SQL Server SqlCommand cmd = new SqlCommand(“getproduct”, connection); cmd.CommandType = CommandType.StoredProcedure; // Tham số của procedure cmd.Parameters.Add( new SqlParameter() { ParameterName = “
id”, SqlDbType = SqlDbType.Int, Value = 10 } ); // Đọc thành tựu trả về using (SqlDataReader reader = cmd.ExecuteReader()) { while (reader.Read()) { var ten = readervàlt;”TenSanpham”>; var gia = readervàlt;”Gia”>; Console.WriteLine($”{ten} t {gia}”); } } connection.Close();}//.. Ghi chú, những phương thức của thi hành của SqlCommand đều sở hữu phương thức bất đồng hóa tương ứng như ExecuteNonQueryAsync(), ExecuteReaderAsync() … để thích thì vận dụng kỹ thuật async, kể những SqlDataReader với ReadAsync()

SqlCommandTham số Parameters của SqlCommandNhững phương thức thi hành SqlCommandExecuteScalarExecuteNonQueryExecuteReaderExecuteXmlReaderGọi procedure

*

(ADO.NET) DataAdapter DataSet và DataTable tìm hiểu và sử dụng (ASP.NET Core MVC) Triển khai ứng dụng ASP.NET trên Server Linux với Kestrel Apache Nginx (ASP.NET Core MVC) Reviews một số trong những admin template và tích hợp SB Admin (ASP.NET Core MVC) Tích hợp trình quản lý và vận hành file vào website (ASP.NET Core) Sử dụng dụng cụ LibMan lấy thư viện client-side (ADO.NET) Reviews ado.net và kết nối SQL Server với SqlConnection
Giới thiệuPrivacyTừ điển Anh – ViệtChạy SQLRegExpCubic-bezierUnix timestampKý tự HTMLcalories, chỉ số BMRchỉ số khối thể chất BMITạo QR CodeLịch vạn niên Liên hệ RSS

Phía trên là blog cá thể, tôi ghi chép và share những gì tôi học được ở phía trên về kỹ năng và kiến thức lập trình PHP, Java, JavaScript, Android, C# … và những kỹ năng và kiến thức technology khácDeveloped by a.viettingame.vn


ộtvàgt;

Về Viettingame.com

Viettingame.com - Chuyên trang web tổng hợp những thông tin hữu ích trên internet như thông tin về game, tin tổng hợp
Xem tất cả các bài viết của Viettingame.com →

Trả lời

Email của bạn sẽ không được hiển thị công khai.