Tạo đối tượng người dùng SqlCommvà trong C# để truy hỏi vấn cùng update tới CSDL SQL Server, thực hiện lệnh với các cách tiến hành ExecuteNonQuery, ExecuteScalar, ExecuteReader

Lớp SqlCommvà - Khởi chế tạo ra đối tượng người sử dụng SqlCommand

Lớp SqlCommvà thực hiện tự DbComm& có thể chấp nhận được tạo ra đối tượng nhưng mà trường đoản cú kia có thể thực hiện các lệnh SQL ảnh hưởng với MS Squốc lộ Server nlỗi những mệnh đề UPDATE|INSERT|CREATE TABLE|SELECT ...Quý Khách vẫn xem: Executescalar là gì

tương tự như có thể chấp nhận được thực hiện các hàm, các stored procedure của Database.

Chú ý: Nếu thực hiện MySQL thì đối tượng người sử dụng xúc tiến DbCommand là MySqlComm&, bao gồm phương pháp áp dụng một giải pháp tương tự.

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

Để lập cập bao gồm một MS SQL Server kèm tài liệu chủng loại, hãy sử dụng Docker với thực hiệntheo hướng dẫn: MS SQL Server bên trên Docker

Ví dụ, khởi tạo ra SqlCommand - cấu hình thiết lập ngay câu query cùng kết nối

var cmd = new SqlCommand(queryString, connection);Có thể khởi tạo thành SqlCommvà tiếp nối new thiết lập những thông số kỹ thuật (câu tróc nã vấn, kết nối với các tsi mê số ...) rồi kế tiếp tiến hành SqlCommand (thực hiện truy hỏi 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 tiêu dùng DbComm& using var command = new SqlCommand(); command.Connection = connection; // select, insert, update, delete comm&.CommandText = "Mệnh đề truy vấn vấn SQL"; // Thực hiện nay những câu truy tìm vấn, đọc kết quả // ... // ... connection.Close(); Từ đối tượng người sử dụng SqlConnection cũng rất có thể tạo tức thì đối tượng người sử dụng SqlCommvà đính với kết nối đó:

using (var cmd = connection.CreateCommand()) cmd.CommandText = queryString; // thực hiện lệnh ... vì thế nhằm thi hành lệnh Squốc lộ cùng với SqlComm&, thì cần phải có một kết nối trước (SqlConnection), rồi tạo thành đối tượng SqlCommand, gán mang đến nó liên kết, câu lệnh Squốc lộ tiếp đến mới thực hiện được. Để thi hành, Call một trong các phương thức như ExecuteScalar, ExecuteNonQuery, ExecuteReader ... trình bày ở mục phía dưới

Thiết lập những tmê mẩn số cho SqlCommmand

Các câu lệnh SQL hoàn toàn có thể viết cất thương hiệu tđắm say số vào nó, sau đó giá trị thực của tđam mê số này được SqlComm& gán ráng vào để sở hữu mệnh đề Squốc lộ đích thực. Tham số vào chuỗi câu lệnh Squốc lộ cam kết hiệu là tenthamso (ghi nhớ bao gồm ký kết hiệu ), ví dụ:

string queryString = "SELECT DanhmucID, TenDanhMuc, MoTa FROM Danhmuc where DanhmucID > DanhmucID"; Thì có một tmê man số tên DanhmucID: Giá trị đích thực của tmê man số này thay thế vì chưng cực hiếm của của một đối tượng kiểu dáng SqlParameter. Tập vừa lòng những tmê say số này lưu vào thuộc tính Parameters của SqlCommand

commvà.Parameters.AddWithValue("Danhmuc của câu tầm nã vấn, kết quảcâu truy vấn là

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

var danhmuc = new SqlParameter("DanhmucID", 5); // Tạo ttê mê sốcommand.Parameters.Add(danhmuc); // Thêm vào SqlCommandvar danhmuc = new SqlParameter("DanhmucID", 5); // Tạo tđam mê sốcommvà.Parameters.Add(danhmuc); // Thêm vào SqlCommandHoặc chi tiết rộng như

// Khởi sản xuất bao gồm hướng đẫn mẫu mã dữ liệuvar danhmuc = new SqlParameter("DanhmucID", SqlDbType.Int);// Gán gái trị vào tđắm say sốdanhmuc.Value = 5;// Thêm vào SqlCommandcommand.Parameters.Add(danhmuc);

Các giải pháp thực hành SqlCommand cùng rước kết quả tróc nã vấn

Có các thủ tục khác biệt nhằm thực hành SqlCommand phụ thuộc vào ngữ cảnh với mục đích khác biệt, bao gồm có những cách thức như:

ExecuteNonQuery() thi hành truy vấn - ko cần trả về dữ liệu gì, tương xứng thực hiện các truy vấn vấn nhỏng Update, Delete ... ExecuteReader() thực hiện lệnh - trả về đối tượng người sử dụng giao diện IDataReader như SqlDataReader, từ kia hiểu được tài liệu trả về ExecuteScalar() thì hành và trả về một quý hiếm nhất - sống số 1 tiên, cột đầu tiên

Sau phía trên áp dụng Gọi những hàm trên

Thi hành SqlCommvà bởi phương thức ExecuteScalar()

Nếu thực hiện SqlCommvà bởi phương thức ExecuteScalar thì nó sẽ thi hành câu lệnh SQL và trả về 1 quý hiếm là cột đầu tiên của cái thứ nhất. (Cho mặc dù câu lệnh SQL thực tiễn trả về tập công dụng những mẫu các cột).

Xem thêm: Cách Chơi Liên Quân Trên Droid4X, Sử Dụng Droid4X Chơi, Các Bước Trong Cách Chơi Liên Quân Trên Droid4X

Lưu ý: cực hiếm tất cả độ dài buổi tối đa 2033 cam kết trường đoản cú

Ví dụ sau sẽ cnhát một cái new vào bảng với trả về quý giá định danh của mẫu bắt đầu chèn vào (ID). Ở trên đây chèn một Shipper mới thông báo HoTen cùng Sodienthoách vào bảng Shippers

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

Thi hành cùng với ExecuteNonQuery

Thi hành SqlCommand bởi cách thức ExecuteNonQuery nó chỉ trả về kết quả là số chiếc tài liệu bị tác động (số loại xóa, số loại update ...). Thường dùng cách này để thi hành các truy tìm vấn UPDATE, INSERT, DELETE. Tuy nhiên, nếu như là điện thoại tư vấn Procedure thì tất cả công dụng 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();comm&.Connection = connection;// Câu truy nã vấn gồm: cyếu tài liệu vào cùng lấy định danh(Primary key) new 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 cùng với ExecuteReader

Thi hành SqlComm& với thủ tục thì nó sẽ khởi tạo ra đối tượng SqlDataReader được mlàm việc sẵn, từ bỏ đối tượng người sử dụng đó góp phát âm từng dòng tác dụng trả về.

Một số phương thức trong SqlDataReader

SqlDataReader.HasRows() cho thấy gồm mẫu dữ liệu làm sao ko SqlDataReader.Read() nạp dữ liệu mẫu tiếp sau, ví như trả về true là có cái tài liệu hấp thụ về thành công xuất sắc, ví như false là đã mất dữ liệu hấp thụ về. Sau Khi Call phương thơm thực này, thì các cột của chiếc hoàn toàn có thể hiểu bởi các toán thù tử , hoặc các hàm đọc dữ liệu nlỗi .GetInt32(cột), .GetString(cột) ... SqlDataReader.Close() đóng góp Reader sau khi phát âm xong xuôi tài liệu

Các câu lệnh SELECT hoàn toàn có thể 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 commvà = new SqlCommand();comm&.Connection = connection;// Câu truy vấn rước 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 = commvà.ExecuteReader();// Kiểm tra có kết 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ư khi có được đối tượng người tiêu dùng SqlDataReader, hoàn toàn có thể đem toàn thể công dụng trả về của SqlCommand đưa vào DataTable

//...SqlComm& 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 SqlCommvà với phương thức thì nó sẽ khởi tạo ra đối tượng người tiêu dùng System.Xml.XmlReader, từ bỏ đối tượng kia giúp hiểu từng cái hiệu quả trả về theo kết cấu XML.

hotline Procedure của DB

Mặc định SqlCommand đã coi văn bản trong trực thuộc tính CommandText là câu lệnh SQL vì nó sẽ thiết lập cấu hình CommandType bởi CommandType.Text (coi ví dụ trên). Nếu mong mỏi call mang lại Procedure thì tùy chỉnh thiết lập nó bằng CommandType.StoredProcedure.

Quý khách hàng hoàn toàn có thể chạy câu lệnh T-Squốc lộ nhằm tạo thành một StoredProcedure mẫu có tên gethàng hóa với 1 tham mê sốidENDThực hành call giấy tờ thủ tục Squốc lộ 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 Squốc lộ Server SqlCommand cmd = new SqlCommand("getproduct", connection); cmd.CommandType = CommandType.StoredProcedure; // Tyêu thích số của procedure cmd.Parameters.Add( new SqlParameter() ParameterName = "id", SqlDbType = SqlDbType.Int, Value = 10 ); // Đọc hiệu quả trả về using (SqlDataReader reader = cmd.ExecuteReader()) while (reader.Read()) var ten = reader; var gia = reader; Console.WriteLine($"ten gia"); connection.Close();//.. Chú ý, các cách làm của thực hiện của SqlCommvà đều phải sở hữu cách làm bất nhất quán tương ứng nhỏng ExecuteNonQueryAsync(), ExecuteReaderAsync() ... nhằm ưa thích thì áp dụng chuyên môn async, nói các SqlDataReader với ReadAsync()

SqlCommandTđắm say số Parameters của SqlCommandNhững cách thức thi hành SqlCommandExecuteScalarExecuteNonQueryExecuteReaderExecuteXmlReaderđiện thoại tư vấn procedure
Bài viết liên quan

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *