- lệnh sql
- tham số lệnh sql
- Phương thức thực thi lệnh sql
- Vô hướng thực thi
- Thực hiện truy vấn
- Người thi hành
- Thực thi xmlreader
- Gọi chương trình
- executenonquery() Thực thi truy vấn – không cần trả về bất kỳ dữ liệu nào, phù hợp để thực hiện cập nhật, xóa và các truy vấn khác…
- executereader() thực thi lệnh – trả về một đối tượng giao diện idatareader tương tự như sqldatareader, từ đó có thể đọc được dữ liệu trả về
- executescalar() thực thi và trả về một giá trị duy nhất – hàng đầu tiên cột đầu tiên
- sqldatareader.hasrows() cho biết có hàng dữ liệu hay không
- sqldatareader.read() tải hàng tiếp theo, nếu đúng, hàng dữ liệu đã được tải thành công, nếu sai, dữ liệu đã được tải. Sau khi gọi phương thức này, bạn có thể sử dụng toán tử [column] để đọc cột của hàng hoặc sử dụng các hàm đọc dữ liệu như .getint32(column), .getstring(column)…
- sqldatareader.close() đóng trình đọc sau khi đọc dữ liệu
lớp sqlcommand – khởi tạo đối tượng sqlcommand
Lớp sqlcommand được triển khai từ dbcommand cho phép tạo các đối tượng mà từ đó các lệnh sql có thể được thực thi để tương tác với máy chủ ms sql, chẳng hạn như update|insert|tạo bảng mệnh đề|select ..strong> và cho phép thực thi các hàm cơ sở dữ liệu, thủ tục lưu trữ.
Lưu ý: Nếu bạn sử dụng mysql, đối tượng triển khai dbcommand là mysqlcommand và cách sử dụng cũng tương tự.
Để nhanh chóng có máy chủ ms sql với dữ liệu mẫu, hãy sử dụng docker và làm theo hướng dẫn: máy chủ ms sql trên docker
Để tạo và thực thi sqlcommand, bạn cần đặt câu lệnh sql (truy vấn) và các tham số của lệnh sql, đồng thời đặt thông tin kết nối với máy chủ sql sqlconnection thành đối tượng sqlcommand .
Ví dụ: đang khởi tạo sqlcommand – thiết lập nhanh chóng cho các truy vấn và kết nối
Bạn có thể khởi tạo sqlcommand rồi đặt tham số (truy vấn, kết nối và tham số…) rồi thực thi sqlcommand (thực thi truy vấn sql)
Bạn cũng có thể tạo ngay đối tượng sqlcommand được liên kết với kết nối từ đối tượng sqlconnection:
Vì vậy, để sử dụng sqlcommand để thực thi các câu lệnh sql, trước tiên bạn cần có một kết nối (sqlconnection), sau đó tạo các đối tượng sqlcommand, gán giá trị cho kết nối, rồi bạn mới có thể thực thi các câu lệnh sql. Để thực thi, gọi một trong các phương thức sau như execscalar, execnonquery, execreader… như hình bên dưới
Đặt tham số cho sqlcommmand
Câu lệnh sql có thể ghi chứa tên tham số, sau đó gán giá trị thực của tham số này cho mệnh đề sql thực thông qua sqlcommand. Các tham số trong chuỗi câu lệnh sql được đại diện bởi @tenthamso (nhớ bao gồm ký hiệu @), ví dụ:
Sau đó, có một tham số gọi là @danhmucid: giá trị thực của tham số này được thay thế bằng giá trị của một đối tượng thuộc loại sqlparameter. Bộ tham số này được lưu trữ trong thuộc tính tham số của sqlcommand
Sau đó có một sqlparameter có tên @danhmuc trong parameters, có giá trị là 5. Lúc này, sqlcommand sẽ thay giá trị 5 vào vị trí @danhmuc của truy vấn truy vấn, truy vấn Kết quả là
Bạn cũng có thể khởi tạo tham số sql và thêm vào, ví dụ:
Hoặc chi tiết hơn như
Cách thực thi lệnh sql và nhận kết quả truy vấn
Tùy thuộc vào ngữ cảnh, có nhiều cách khác nhau để thực thi sqlcommand, bao gồm các phương thức sau:
Điều sau đây áp dụng cho các cuộc gọi đến các chức năng trên
Sử dụng phương thức execscalar() để thực thi sqlcommand
Nếu lệnh sql được thực thi bằng phương thức execscalar thì nó sẽ thực thi câu lệnh sql và trả về 1 giá trị là cột đầu tiên của hàng đầu tiên. (Liệu câu lệnh sql thực tế có trả về tập kết quả nhiều hàng nhiều cột hay không). Lưu ý: Độ dài tối đa là 2033 ký tự
Ví dụ
sau đây chèn một hàng mới vào một bảng và trả về một ký tự xuống dòng (id). Tại đây một người giao hàng mới được chèn vào bảng người giao hàng với thông tin hoten và sodienthoai
Thực thi với execnonquery
Thực thi lệnh sql bằng phương thức execnonquery, nó chỉ trả về số hàng dữ liệu bị ảnh hưởng (số hàng đã xóa, số hàng đã cập nhật…). Điều này thường được sử dụng để thực hiện các truy vấn cập nhật, chèn và xóa. Tuy nhiên, nếu thủ tục được gọi, kết quả sẽ được trả về.
Thực thi với đầu đọc thực thi
Sử dụng phương thức này để thực thi sqlcommand sẽ tạo một đối tượng sqldatareader được mở sẵn và đọc từng dòng kết quả trả về.
Một số phương thức trong sqldatareader
Câu lệnh select có thể được sử dụng như thế này
readcate.cs
Ngoài ra, khi lấy đối tượng sqldatareader, bạn có thể lấy tất cả các kết quả do sqlcommand trả về và đưa chúng vào dạng dữ liệu
Thực thi trình đọc xml
Sử dụng phương thức này để thực thi sqlcommand sẽ tạo một đối tượng system.xml.xmlreader, và đọc từng dòng kết quả trả về theo cấu trúc xml.
Gọi chương trình cơ sở dữ liệu
Theo mặc định, sqlcommand sẽ coi nội dung của thuộc tính commandtext là một câu lệnh sql, bởi vì nó có commandtype được đặt thành commandtype.text (xem ví dụ ở trên). Nếu bạn muốn gọi thủ tục, thì hãy đặt nó bằng commandtype.storedprocedure.
Bạn có thể chạy câu lệnh t-sql để tạo thủ tục lưu trữ mẫu có tên là getproduct với tham số @id chỉ truy xuất thông tin về sản phẩm theo id
Thực hành gọi quy trình máy chủ sql
Gọi process.cs
Lưu ý rằng các phương thức thực thi của sqlcommand có các phương thức không đồng bộ tương ứng, chẳng hạn như execnonqueryasync(), execreaderasync()…Công nghệ không đồng bộ được ưu tiên hơn, bao gồm cả sqldatareaders với readasync()
Mã nguồn: ado_02_sqlcommand (git) hoặc tải xuống