Executescalar là gì

     

Tạo đối tượng người tiêu dùng SqlCommand trong C# nhằm 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 SqlCommand

Lớp SqlCommand xúc tiến từ DbCommand có thể chấp nhận được tạo ra đối tượng người tiêu dùng mà từ đó có thể thi hành những lệnh SQL cửa hàng với MS SQL hệ thống như những mệnh đề UPDATE|INSERT|CREATE TABLE|SELECT ...

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

cũng như chất nhận được thi hành những hàm, các stored procedure của Database.

Chú ý: Nếu sử dụng MySQL thì đối tượng người tiêu dùng triển khai DbCommand là MySqlCommand, tất cả cách thực hiện một biện pháp tương tự.

Để nhanh chóng có một MS SQL server kèm dữ liệu mẫu, hãy sử dụng Docker cùng thực hiệntheo hướng dẫn: MS SQL server trên Docker

Để tạo thành và thi hành được SqlCommand thì cần thiết lập mang đến nó câu lệnh SQL (truy vấn), và các tham số mang lại lệnh SQL đó, bên cạnh đó phải tùy chỉnh thiết lập thông tin kết nối đến SQL server SqlConnection vào đối tượng người sử dụng SqlCommand.

Xem thêm: Heuristic Là Gì ? Chi Tiết Về Heuristic Mới Nhất 2021 Chi Tiết Về Heuristic Mới Nhất 2021

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

var cmd = new SqlCommand(queryString, connection);Có thể khởi sinh sản SqlCommand tiếp đến mới tùy chỉnh cấu hình các thông số kỹ thuật (câu tróc nã vấn, liên kết và những tham số ...) rồi tiếp nối thực hiện SqlCommand (thực hiện tại 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 sử dụng DbCommand using var command = new SqlCommand(); command.Connection = connection; // select, insert, update, delete command.CommandText = "Mệnh đề tróc nã vấn SQL"; // tiến hành các câu tróc nã vấn, đọc công dụng // ... // ... Connection.Close(); Từ đối tượng SqlConnection cũng hoàn toàn có thể tạo ngay đối tượng người sử dụng SqlCommand thêm với liên kết đó:

using (var cmd = connection.CreateCommand()) cmd.CommandText = queryString; // tiến hành lệnh ... vậy nên để thực hành lệnh SQL cùng với SqlCommand, thì cần có một kết nối trước (SqlConnection), rồi sinh sản ra đối tượng SqlCommand, gán đến nó kết nối, câu lệnh SQL sau đó mới thực hành được. Để thi hành, hotline 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ố đến SqlCommmand

Các câu lệnh SQL rất có thể viết đựng tên tham số vào nó, sau đó giá trị thực của thông số này được SqlCommand gán cố kỉnh vào để có mệnh đề SQL thực sự. Thông số trong chuỗi câu lệnh SQL ký kết hiệu là
tenthamso
(nhớ tất cả ký hiệu
), ví dụ:

string queryString = "SELECT DanhmucID, TenDanhMuc, MoTa FROM Danhmuc where DanhmucID >
DanhmucID"; Thì tất cả một tham số thương hiệu
DanhmucID: quý giá thực sự của tham số này sửa chữa bởi quý hiếm của của một đối tượng người sử dụng kiểu SqlParameter. Tập hợp những tham số này lưu giữ trong trực thuộc tính Parameters của SqlCommand

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

"SELECT DanhmucID, TenDanhMuc, MoTa FROM Danhmuc where DanhmucID > 5"Ngoài ra hoàn toàn có thể khởi tạo thành một SqlParameter cùng thêm vào, ví dụ:

var danhmuc = new SqlParameter("
DanhmucID", 5); // chế tạo tham sốcommand.Parameters.Add(danhmuc); // sản xuất SqlCommandvar danhmuc = new SqlParameter("
DanhmucID", 5); // tạo tham sốcommand.Parameters.Add(danhmuc); // cung cấp SqlCommandHoặc chi tiết hơn như

// Khởi tạo có chỉ định vẻ bên ngoài dữ liệuvar danhmuc = new SqlParameter("
DanhmucID", SqlDbType.Int);// Gán gái trị vào tham sốdanhmuc.Value = 5;// cung ứng SqlCommandcommand.Parameters.Add(danhmuc);

Các cách thi hành SqlCommand và lấy công dụng truy vấn

Có những phương thức không giống nhau để thi hành SqlCommand phụ thuộc vào ngữ cảnh với mục tiêu khác nhau, tất cả có các phương thức như:

ExecuteNonQuery() thi hành truy nã vấn - không bắt buộc trả về dữ liệu gì, cân xứng thực hiện những truy vấn như Update, Delete ... ExecuteReader() thi hành lệnh - trả về đối tượng người sử dụng giao diện IDataReader như SqlDataReader, từ kia đọc được tài liệu trả về ExecuteScalar() thì hành và trả về một cực hiếm duy độc nhất vô nhị - ở số 1 tiên, cột thứ nhất

Sau đây vận dụng gọi các hàm trên

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

Nếu thực hiện SqlCommand bằng phương thức ExecuteScalar thì nó đã thi hành câu lệnh SQL cùng trả về 1 quý giá là cột thứ nhất của dòng đầu tiên. (Cho mặc dù câu lệnh SQL thực tế trả về tập hiệu quả nhiều dòng các cột). Lưu giữ ý: giá bán trị bao gồm độ dài tối đa 2033 cam kết tự

Ví dụ sau đang chèn một dòng new vào bảng với trả về quý giá đị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 cùng 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 tài liệu vào và lấy định danh(Primary key) new 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ề quý giá đầu tiênConsole.WriteLine($"Thêm mới Shipper, ID = ShipperID");

Thi hành cùng với ExecuteNonQuery

thực hiện SqlCommand bởi phương thức ExecuteNonQuery nó chỉ trả về công dụng là số dòng tài liệu bị tác động (số cái xóa, số chiếc update ...). Hay được sử dụng cách này để thi hành các truy vấn UPDATE, INSERT, DELETE. Mặc dù nhiên, nếu như là hotline Procedure thì có hiệu 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 SqlCommandusing var command = new SqlCommand();command.Connection = connection;// Câu truy vấn gồm: chèn tài 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 cùng với ExecuteReader

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

Một số cách làm trong SqlDataReader

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

Các câu lệnh SELECT có thể dùng biện pháp náy

readCate.cs

// tạo ra 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 sử dụng SqlCommandusing var command = new SqlCommand();command.Connection = connection;// Câu truy hỏi vấn rước danh mụcstring queryString =
"SELECT DanhmucID, TenDanhMuc, MoTa FROM Danhmuc";command.CommandText = queryString;// Thi hành tróc nã vấn trả về SqlReaderusing var reader = command.ExecuteReader();// khám nghiệm có công dụng trả vềif (reader.HasRows) // Đọc từng cái tập tác dụng while (reader.Read()) var danhmuc = reader.GetInt32(0); var tendanhmuc = reader<"TenDanhMuc">; var mota = reader.GetString("Mota"); Console.WriteLine($"danhmuc, 4 - tendanhmuc, -20 - mota"); else Console.WriteLine("Không có dữ liệu trả về");connection.Close(); trong khi khi có được đối tượng người sử dụng SqlDataReader, hoàn toàn có thể lấy toàn bộ kết quả 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

thực hiện SqlCommand với thủ tục thì nó sẽ tạo nên ra đối tượng người tiêu dùng System.Xml.XmlReader, từ đối tượng người tiêu dùng đó giúp hiểu từng dòng hiệu quả trả về theo kết cấu XML.

Xem thêm: Hướng Dẫn Những Trò Ảo Thuật Đơn Giản Với Dây Thun, 35 Trò Ảo Thuật Đơn Giản

Gọi Procedure của DB

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

Bạn hoàn toàn có thể chạy câu lệnh T-SQL để tạo thành một StoredProcedure mẫu mang tên getproduct với 1 tham số
idENDThực hành gọi 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 hệ thống SqlCommand cmd = new SqlCommand("getproduct", connection); cmd.CommandType = CommandType.StoredProcedure; // thông số của procedure cmd.Parameters.Add( new SqlParameter() ParameterName = "
id", SqlDbType = SqlDbType.Int, Value = 10 ); // Đọc công dụng trả về using (SqlDataReader reader = cmd.ExecuteReader()) while (reader.Read()) var ten = reader<"TenSanpham">; var gia = reader<"Gia">; Console.WriteLine($"ten gia"); connection.Close();//.. Chú ý, những phương thức của thực hành của SqlCommand đều phải sở hữu phương thức bất đồng nhất tương ứng như ExecuteNonQueryAsync(), ExecuteReaderAsync() ... để mê say thì áp dụng kỹ thuật async, kể những SqlDataReader với ReadAsync()


SqlCommandTham số Parameters của SqlCommandNhững thủ tục thi hành SqlCommandExecuteScalarExecuteNonQueryExecuteReaderExecuteXmlReaderGọi procedure
*

Tạo các Requirement với Authorization handler xác thực quyền truy cập Authorize trong ASP.NET bộ vi xử lý core Sao lưu và phục sinh database trong SQL Server kiểm soát và thu gọn file data tệp tin log của Database trong SQL server (ADO.NET) DataAdapter DataSet với DataTable khám phá và áp dụng (ASP.NET core MVC) thực hiện ứng dụng ASP.NET trên server Linux với Kestrel Apache Nginx (ADO.NET) reviews ado.net và liên kết 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 khung người BMITạo QR CodeLịch vạn niên liên hệ RSS

Đây là blog cá nhân, tôi ghi chép và chia sẻ những gì tôi học tập được ở chỗ này về kỹ năng lập trình PHP, Java, JavaScript, Android, C# ... Và những kiến thức công nghệ khácDeveloped by khovattuhoanthien.com