EXECUTESCALAR LÀ GÌ

Tạo đối tượng người dùng SqlComm& trong C# nhằm tróc nã vấn và update cho tới CSDL Squốc lộ Server, thực hiện lệnh với các cách thức ExecuteNonQuery, ExecuteScalar, ExecuteReader

Lớp SqlCommvà - Khởi chế tạo ra đối tượng người tiêu dùng SqlCommand

Lớp SqlCommvà thực thi trường đoản cú DbCommand được cho phép tạo nên đối tượng người sử dụng cơ mà trường đoản cú kia có thể thực hành những lệnh SQL ảnh hưởng cùng với MS SQL Server nlỗi những mệnh đề UPDATE|INSERT|CREATE TABLE|SELECT ...quý khách hàng đã xem: Executescalar là gì cũng như được cho phép thực hiện các hàm, những stored procedure của Database.

Bạn đang xem: Executescalar là gì

Chú ý: Nếu thực hiện MySQL thì đối tượng người sử dụng thực thi DbCommand là MySqlCommand, có phương pháp áp dụng một biện pháp tựa như.

Để nhanh chóng có một MS SQL Server kèm tài liệu mẫu mã, hãy dùng Docker với thực hiệntheo phía dẫn: MS Squốc lộ Server bên trên Docker

Ví dụ, khởi tạo SqlComm& - cấu hình thiết lập ngay lập tức câu query với kết nối

var cmd = new SqlCommand(queryString, connection);cũng có thể khởi chế tạo SqlCommand tiếp nối mới thiết lập cấu hình những thông số kỹ thuật (câu truy vấn vấn, kết nối và các tđắm đuối số ...) rồi sau đó thực hiện SqlComm& (triển khai truy nã 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 commvà = new SqlCommand(); commvà.Connection = connection; // select, insert, update, delete command.CommandText = "Mệnh đề tầm nã vấn SQL"; // Thực hiện tại các câu truy tìm vấn, hiểu công dụng // ... // ... connection.Close(); Từ đối tượng người sử dụng SqlConnection cũng hoàn toàn có thể tạo tức thì đối tượng SqlCommand lắp với liên kết đó:

using (var cmd = connection.CreateCommand()) cmd.CommandText = queryString; // thực hiện lệnh ... vì thế để thực hành lệnh Squốc lộ cùng với SqlCommvà, thì cần có một kết nối trước (SqlConnection), rồi tạo nên đối tượng người tiêu dùng SqlCommvà, gán đến nó liên kết, câu lệnh SQL sau đó new thi hành được. Để thực hành, điện thoại tư vấn một trong những cách làm như ExecuteScalar, ExecuteNonQuery, ExecuteReader ... trình bày ở mục phía dưới

Thiết lập những tsay mê số mang đến SqlCommmand

Các câu lệnh SQL có thể viết chứa thương hiệu tđam mê số trong nó, sau đó quý hiếm thực của tmê man số này được SqlComm& gán núm vào để có mệnh đề Squốc lộ đích thực. Tđắm say số trong chuỗi câu lệnh Squốc lộ cam kết hiệu là tenthamso (lưu giữ tất cả ký kết hiệu ), ví dụ:

string queryString = "SELECT DanhmucID, TenDanhMuc, MoTa FROM Danhmuc where DanhmucID > DanhmucID"; Thì bao gồm một tsi mê số tên DanhmucID: Giá trị đích thực của tđắm đuối số này thay thế vị cực hiếm của của một đối tượng người sử dụng dạng hình SqlParameter. Tập thích hợp những tsay mê số này lưu vào nằm trong tính Parameters của SqlCommand

comm&.Parameters.AddWithValue("Danhmuc của câu truy hỏi vấn, kết quảcâu tróc nã vấn là

"SELECT DanhmucID, TenDanhMuc, MoTa FROM Danhmuc where DanhmucID > 5"Hình như có thể khởi chế tạo một SqlParameter cùng chế tạo, ví dụ:

var danhmuc = new SqlParameter("DanhmucID", 5); // Tạo tmê say sốcommvà.Parameters.Add(danhmuc); // Thêm vào SqlCommandvar danhmuc = new SqlParameter("DanhmucID", 5); // Tạo ttê mê sốcommand.Parameters.Add(danhmuc); // Thêm vào SqlCommandHoặc cụ thể rộng như

// Khởi chế tác bao gồm chỉ định kiểu dáng dữ liệuvar danhmuc = new SqlParameter("DanhmucID", SqlDbType.Int);// Gán gái trị vào ttê mê sốdanhmuc.Value = 5;// Thêm vào SqlCommandcomm&.Parameters.Add(danhmuc);

Các cách thi hành SqlComm& và rước tác dụng tầm nã vấn

Có các cách tiến hành không giống nhau nhằm thi hành SqlCommvà tùy thuộc vào ngữ cảnh cùng với mục đích khác biệt, có gồm những cách làm như:

ExecuteNonQuery() thi hành truy hỏi vấn - không bắt buộc trả về dữ liệu gì, tương xứng triển khai những truy vấn vấn nhỏng Update, Delete ... ExecuteReader() thi hành lệnh - trả về đối tượng người dùng bối cảnh IDataReader như SqlDataReader, trường đoản cú đó hiểu được tài liệu trả về ExecuteScalar() thì hành với trả về một quý giá duy nhất - sống hàng đầu tiên, cột trước tiên

Sau phía trên áp dụng gọi các hàm trên

Thi hành SqlCommand bằng cách làm ExecuteScalar()

Nếu thực hành SqlCommand bằng thủ tục ExecuteScalar thì nó đang thi hành câu lệnh SQL với trả về 1 quý giá là cột trước tiên của loại đầu tiên. (Cho cho dù câu lệnh SQL thực tế trả về tập kết quả nhiều cái nhiều cột).

Xem thêm: Iphone Thì Nên Dùng Kính Thực Tế Ảo Cho Iphone 6 Plus 【Nên Mua】

Lưu ý: quý giá tất cả độ nhiều năm về tối đa 2033 ký kết trường đoản cú

lấy ví dụ như sau đã chèn một mẫu bắt đầu vào bảng cùng trả về quý hiếm định danh của dòng bắt đầu ckém vào (ID). Ở đây ckém một Shipper new công bố HoTen cùng Sodienthoai vệ vào bảng Shippers

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

Thi hành với ExecuteNonQuery

Thi hành SqlComm& bằng thủ tục ExecuteNonQuery nó chỉ trả về công dụng là số loại dữ liệu bị ảnh hưởng (số mẫu xóa, số loại update ...). Thường dùng cách này nhằm thực hiện những tróc nã vấn UPDATE, INSERT, DELETE. Tuy nhiên, ví như là call Procedure thì tất cả kết quả 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 commvà = new SqlCommand();command.Connection = connection;// Câu truy hỏi vấn gồm: chèn tài liệu vào với mang định danh(Primary key) bắt đầu cyếu vàostring queryString = ShipperID", 4);var rows_affected = command.ExecuteNonQuery();Console.WriteLine($"Số dòng ảnh hưởng = rows_affected");connection.Close();

Thi hành với ExecuteReader

Thi hành SqlCommand cùng với cách tiến hành thì nó sẽ tạo nên ra đối tượng người dùng SqlDataReader được mlàm việc sẵn, trường đoản cú đối tượng người tiêu dùng đó góp hiểu từng chiếc tác dụng trả về.

Một số cách thức trong SqlDataReader

SqlDataReader.HasRows() cho thấy tất cả cái dữ liệu như thế nào không SqlDataReader.Read() hấp thụ tài liệu dòng tiếp sau, giả dụ trả về true là gồm cái dữ liệu nạp về thành công xuất sắc, trường hợp false là đã mất dữ liệu hấp thụ về. Sau lúc hotline phương thơm thực này, thì các cột của loại hoàn toàn có thể hiểu bằng các toán thù tử , hoặc các hàm đọc dữ liệu nhỏng .GetInt32(cột), .GetString(cột) ... SqlDataReader.Close() đóng góp Reader sau thời điểm đọc chấm dứt dữ liệu

Các câu lệnh SELECT rất có thể dùng biện pháp 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 tiêu dùng SqlCommandusing var command = new SqlCommand();commvà.Connection = connection;// Câu truy vấn đem danh mụcstring queryString = "SELECT DanhmucID, TenDanhMuc, MoTa FROM Danhmuc";comm&.CommandText = queryString;// Thi hành truy nã vấn trả về SqlReaderusing var reader = command.ExecuteReader();// Kiểm tra tất cả hiệu quả trả vềif (reader.HasRows) // Đọc từng dòng tập tác dụng while (reader.Read()) var danhmuc = reader.GetInt32(0); var tendanhmuc = reader; var mota = reader.GetString("Mota"); Console.WriteLine($"danhmuc, 4 - tendanhmuc, -20 - mota"); else Console.WriteLine("Không bao gồm dữ liệu trả về");connection.Close(); Dường như Lúc dành được đối tượng người dùng SqlDataReader, có thể mang cục bộ công dụng trả về của SqlCommvà gửi vào DataTable

Hotline Procedure của DB

Mặc định SqlCommand đã coi câu chữ trong thuộc tính CommandText là câu lệnh Squốc lộ bởi nó sẽ tùy chỉnh CommandType bởi CommandType.Text (coi ví dụ trên). Nếu hy vọng call cho Procedure thì cấu hình thiết lập nó bằng CommandType.StoredProcedure.

quý khách hàng rất có thể chạy câu lệnh T-Squốc lộ nhằm tạo nên một StoredProcedure mẫu mã mang tên getproduct với 1 tđam mê sốidENDThực hành Call giấy tờ 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 giấy tờ thủ tục PROCEDURE .(id int) vào MS SQL Server SqlCommvà cmd = new SqlCommand("getproduct", connection); cmd.CommandType = CommandType.StoredProcedure; // Tđắm đuối số của procedure cmd.Parameters.Add( new SqlParameter() ParameterName = "id", SqlDbType = SqlDbType.Int, Value = 10 ); // Đọc kết quả trả về using (SqlDataReader reader = cmd.ExecuteReader()) while (reader.Read()) var ten = reader; var gia = reader; Console.WriteLine($"ten gia"); connection.Close();//.. Chụ ý, những cách làm của thi hành của SqlCommand đều phải có thủ tục bất đồng hóa tương ứng nhỏng ExecuteNonQueryAsync(), ExecuteReaderAsync() ... để thích thì áp dụng kỹ thuật async, nói các SqlDataReader cùng với ReadAsync()

SqlCommandTđê mê số Parameters của SqlCommandNhững thủ tục thi hành SqlCommandExecuteScalarExecuteNonQueryExecuteReaderExecuteXmlReaderđiện thoại tư vấn procedure