Sqlcommand là gì

Trong bài viết này chúng ta sẽ tìm hiểu về SqlCommand trong C# ADO.NET, đây là một trong các class được sử dụng rất nhiều trong ADO.NET.

Bạn đang xem: Cách dùng SqlCommand trong C# [ADO.NET]

Để hiểu rõ hơn về nó, các bạn hãy cùng mình tìm hiểu lần lượt về cách dùng và công dụng của nó nhé. Ở mỗi phần mình sẽ có một ví dụ cho các bạn nắm kỹ hơn.

1. SqlCommand trong C# là gì?

ADO.NET SqlCommand trong C# được sử dụng để lưu trữ và thực thi câu lệnh SQL dựa trên cơ sở dữ liệu SQL Server. Class SqlCommand là một lớp được kế thừa từ class DbCommand và triển khai interface ICloneable.

2. Các phương thức của SqlCommand trong C#

Trong phần này mình sẽ chỉ ra cấu trúc của class SqlCommand bao gồm có năm hàm khởi tạo và phương thức của class này.

Bài viết này được đăng tại [free tuts .net]

Cấu trúc của class SqlCommand

Class SqlCommand trong C# cung cấp năm hàm khởi tạo sau đây.

Trong đó:

  • SqlCommand[]: Hàm tạo này được sử dụng để khởi tạo mới một class System.Data.SqlClient.SqlCommand.
  • SqlCommand[string cmdText]: Được sử dụng để khởi tạo mới class System.Data.SqlClient.SqlCommand với văn bản truy vấn của nó.
  • SqlCommand[string cmdText, SqlConnection connection]: Được sử dụng để khởi tạo mới class System.Data.SqlClient.SqlCommand với văn bản truy vấn của System.Data.SqlClient.SqlConnection.
  • SqlCommand[string cmdText, SqlConnection connection, SqlTransaction transaction]: Được sử dụng để khởi tạo mới class System.Data.SqlClient.SqlCommand với văn bản truy vấn của SqlConnection và SqlTracsaction.
  • SqlCommand[string cmdText, SqlConnection connection, SqlTransaction transaction, SqlCommandColumnEncryptionSetting columnEncryptionSetting]: Được sử dụng để khởi tạo mới một class System.Data.SqlClient.SqlCommand với văn bản là các câu lệnh, kết nối và cài đặt mã hóa được chỉ định.

Các phương thức của class SqlCommand

Class SqlCommand trong C# cung cấp các phương thức sau.

  • BeginExecuteNonQuery[]: Phương thức này bắt đầu thực thi không đồng bộ câu lệnh Transact-SQL hoặc thủ tục được lưu trữ mô tả bởi System.Data.SqlClient.SqlCommand này.
  • Cancel[]: Phương thức này được dùng để hủy bỏ việc thực thi System.Data.SqlClient.SqlCommand.
  • Clone[]: Phương thức này tạo một đối tượng System.Data.SqlClient.SqlCommand mới, là bản sao của bản hiện tại.
  • CreateParameter[]: Phương thức này tạo mới một đối tượng System.Data.SqlClient.SqlParameter.
  • ExecuteReader[]: Phương thức này gửi System.Data.SqlClient.SqlCommand.CommandText tới System.Data.SqlClient.SqlCommand.Connection và xây dựng một System.Data.SqlClient.SqlDataReader.
  • ExecuteScalar[]: Phương thức này thực hiện truy vấn và trả về cột đầu tiên của hàng đầu tiên trong tập kết quả đưuọc trả về bởi truy vấn.
  • ExecuteNonQuery[]: Phương thức này thực thi một câu lệnh Transact-SQL và trả về số hàng bị ảnh hưởng.
  • Prepare[]: Phương thức này tạo một phiên bản chuẩn bị của lệnh trên một phiên bản của SQL Server.
  • ResetCommandTimeOut[]: Phương thức này đặt lại thuộc tính CommandTimeOut về giá trị mặc định của nó.

3. Cách sử dụng SqlCommand trong C#

Trong ví dụ này mình sẽ sử dụng bảng StudentDb sau để thực hiện một số thao tác với class SqlCommand.

Article post on: tungchinguyen.com

Các bạn chạy các câu lệnh SQL này để tạo bảng StudentDb và các dữ liệu trong bảng.

Trong class SqlCommand có ba phương thức thường được sử dụng đó là ExecuteReader, ExecuteNonQuery và ExecuteScalar. Bây giờ hãy cùng mình tìm hiểu về cách dùng của ba phương thức bày nhé.

Phương thức ExecuteReader của SqlCommand

Như phần trên mình có nói, phương pháp này được sử dụng để gửi CommandText tới Connection và xây dụng một SqlDataReader. Khi câu lệnh T-SQL của các bạn trả về nhiều hơn một giá trị [ví dụ: các hàng dữ liệu], thì bạn cần sử dụng phương thức ExecuteReader.

Để hiểu rõ hơn các bạn hãy xem ví dụ sau, mình đã sử dụng phương thức ExecuteReader để thực thi câu lệnh T-SQL và trả về dữ liệu.

Ở bài trước mình đã có hướng dẫn cách kết nối tới SQL Server bằng SqlConnection, các bạn có thể xem lại để biết được cách kết nối nhé. Ở đây mình sử dụng file config để kết nối tới SQL Server.

Source: tungchinguyen.com

Trong đoạn code trên các bạn chỉ cần quan tâm đến hai thứ, đó là SqlCommand và ExecuteReader.

Trong đó:

  • “select * from Student”: Đây là câu lệnh Query trong SQL Server, được dùng để lấy dữ liệu trong bảng Student.
  • “con”: Là chuỗi kết nối tới SQL Server được lấy từ file config.

Ở đây mình đã khai báo một đối tượng sdr thuộc SqlDataReader trong class SqlCommand. Sau đó sử dụng vòng lặp while[] để lặp và in ra hết các giá trị trả về từ câu lệnh Query.

Kết quả:

Phương thức ExecuteScalar của SqlCommand trong ADO.NET

Để lấy ô dữ liệu đầu tiên trong kết quả trả về từ SQL Server, ta sử dụng phương thức ExecuteScalar thay vì sử dụng ExecuteReader. Về cơ bản thì cách thức hoạt động của hai phương thức này khá giống nhau.

Kết quả:

Phương thức ExecuteNonQuery của SqlCommand

Trong phần này mình thực hiện thêm, sửa, xóa dữ liệu trong bảng Student để các bạn có thể so sánh nó dễ dàng hơn.

Kết quả:

Như vậy là chúng ta đã tìm hiểu xong về cách dùng SqlCommand trong C# ADO.NET. Đây là một class được sử dụng rất nhiều và nó rất quan trọng, vì vậy các bạn hãy luyện tập thật nhiều để thành thạo nó nhé. Ở bài tiếp theo mình sẽ tiếp tục hướng dẫn cách dùng class SqlDataReader trong C# ADO.NET, các bạn chú ý theo dõi nhé!!!

Bạn đang đọc bài viết từ chuyên mục Tổng hợp tại website //tungchinguyen.com.

Article post on: tungchinguyen.com

Tạo đối tượng SqlCommand trong C# để truy vấn và cập nhật tới CSDL SQL Server, thực hiện lệnh với các phương thức ExecuteNonQuery, ExecuteScalar, ExecuteReader

Bạn đang xem: Executescalar Là Gì – Phương Thức Sqlcommand

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

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

Đang xem: Executescalar là gì

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

Để nhanh chóng có một MS SQL Server kèm dữ liệu mẫu, hãy 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ì cần thiết lập cho nó câu lệnh SQL [truy vấn], và các tham số cho lệnh SQL đó, đồng thời phải thiết lập thông tin kết nối đến SQL Server SqlConnection vào đối tượng SqlCommand.

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];Có thể khởi tạo SqlCommand sau đó mới thiết lập các thông số [câu truy vấn, kết nối và các tham số …] rồi sau đó thực hiện SqlCommand [thực hiện 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 DbCommand using var command = new SqlCommand[]; command.Connection = connection; // select, insert, update, delete command.CommandText = “Mệnh đề truy vấn SQL”; // Thực hiện các câu truy vấn, đọc kết quả // … // … connection.Close[]; Từ đối tượng SqlConnection cũng có thể tạo ngay đối tượng SqlCommand gắn với kết nối đó:

using [var cmd = connection.CreateCommand[]] { cmd.CommandText = queryString; // thực hiện lệnh … } Như vậy để thi hành lệnh SQL với SqlCommand, thì cần có một kết nối trước [SqlConnection], rồi tạo ra đối tượ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 các phương thức như ExecuteScalar, ExecuteNonQuery, ExecuteReader … trình bày ở mục phía dưới

Thiết lập các tham số cho SqlCommmand

Các câu lệnh SQL có thể 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 để có mệnh đề SQL thực sự. Tham số trong chuỗi câu lệnh SQL ký hiệu là
tenthamso
[nhớ có ký hiệu
], ví dụ:

Article post on: tungchinguyen.com

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

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 chi tiết hơn như

// Khởi tạo có chỉ định 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];

Các cách thi hành SqlCommand và lấy kết quả truy vấn

Có các phương thức khác nhau để thi hành SqlCommand tùy theo ngữ cảnh với mục đích khác nhau, gồm có các phương thức như:

ExecuteNonQuery[] thi hành truy vấn – không cần trả về dữ liệu gì, phù hợp thực hiện các truy vấn như Update, Delete … ExecuteReader[] thi hành lệnh – trả về đối tượ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 đầu tiên, cột đầu tiên

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

Source: tungchinguyen.com

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 đầu tiên của dòng đầu tiên. [Cho dù câu lệnh SQL thực tế trả về tập kết quả nhiều dòng nhiều cột]. Lưu ý: giá trị có độ 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]. Ở đây chèn một Shipper mới thông tin HoTen và Sodienthoai 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: 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ề kết quả là số dòng dữ liệu bị ảnh hưởng [số dòng xóa, số dòng update …]. Thường dùng cách này để thi hành các truy vấn UPDATE, INSERT, DELETE. Tuy nhiên, nếu là gọi Procedure thì 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 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 ảnh hưở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 SqlDataReader được mở sẵn, từ đối tượng đó giúp đọc từng dòng kết quả trả về.

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

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

readCate.cs

//…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 System.Xml.XmlReader, từ đối tượng đó giúp đọc từng dòng kết quả trả về theo cấu trúc XML.

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ì nó đã thiết lập CommandType bằng CommandType.Text [xem ví dụ trên]. Nếu muốn gọi đến Procedure thì thiết lập nó bằng CommandType.StoredProcedure.

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

callProcedure.cs

Bạn đang đọc bài viết từ chuyên mục Tổng hợp tại website //tungchinguyen.com.

Article post on: tungchinguyen.com

Previous ArticleBulgogi – Món ăn số một của ẩm thực Hàn Quốc

Video liên quan

Chủ Đề