Truy cập sở dữ liệu với .NET
Commands
Chúng ta lại nói li vcommands. Một command là một một kiểu đơn giản,
một chuỗi lnh SQL được dùng để truy xut dữ liệu. Mt command thể
là một stored procedure, hoặc là tên của một bảng sẽ trả về:
string source = "server=(local)\\NetSDK;" +
"uid=QSUser;pwd=QSPassword;" +
"database=Northwind";
string select = "SELECT ContactName,CompanyName FROM Customers";
SqlConnection conn = new SqlConnection(source);
conn.Open();
SqlCommand cmd = new SqlCommand(select, conn);
Các mnh đề SqlCommand và OleDbCommand thường được gọi là
CommandType, chúng được dùng để định nghĩa các mệnh đề SQL, một
stored procedure, hoặc một u lệnh SQL. Sau đây là một bảng liệt đơn
giản về CommandType:
CommandType Example
Text
(default)
Stri
ng select = "SELECT ContactName FROM
Customers";
SqlCommand cmd = new SqlCommand(select , conn);
StoredProcedure
SqlCommand cmd = new
SqlCommand("CustOrderHist", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@CustomerID", "QUICK");
TableDirect
OleDbCommand cmd = new
OleDbCommand("Categories", conn);
cmd.CommandType = CommandType.TableDirect;
Khi thực thi một stored procedure, cần truyền các tham số cho procedure. Ví
dtn i đặt trực tiếp tham s@CustomerID, vậy có nhiều ch để cài
giá trị tham số, chúng ta sẽbàn kĩ trong phần sau của chương này.
chú ý Kiểu TableDirect command kng chđúng cho OleDb
provider
một ngoại lệ xảy ra khi bạn cdùng command này trong Sql
provider.
Executing Commands
Bạn đã định nghĩa c command, và bn muốn thực thi chúng. một số
cách để phát ra các statement, dựa vào kết qumà bạn muốn command đó
mun trả về. Các mệnh đề SqlCommand OleDbCommand cung cấp c
phương thức thực thi sau:
ExecuteNonQuery() Thực thi các command không trả vkết quả gì
c
ExecuteReader() – Thực thi các command và trvề kiểu IDataReader
ExecuteScalar() – Thực thi các command và trả về một giá trị đơn
Lp SqlCommand cung cp thêm một số phương thức sau
ExecuteXmlReader() Thực thi các command trả về một đối tượng
XmlReader, các đối tượng được dùng đề xem xét các XML được trả về từ cơ
sở dữ liu.
dcho chương này thđược tìm thấy trong tmục con Chapter
09\01_ExecutingCommands subdirectory của phần code down về.
ExecuteNonQuery()
Phương thức này tng được dùng cho các u lnh UPDATE, INSERT,
hoặc DELETE, để trả về số các mu tin btác động. Phương thức này th
trả về các kết quả thông qua các tham số được truyền vào stored procedure.
using System;
using System.Data.SqlClient;
public class ExecuteNonQueryExample
{
public static void Main(string[] args)
{
string source = "server=(local)\\NetSDK;" +
"uid=QSUser;pwd=QSPassword;" +
"database=Northwind";
string select = "UPDATE Customers " +
"SET ContactName = 'Bob' " +
"WHERE ContactName = 'Bill'";
SqlConnection conn = new SqlConnection(source);
conn.Open();
SqlCommand cmd = new SqlCommand(select, conn);
int rowsReturned = cmd.ExecuteNonQuery();
Console.WriteLine("{0} rows returned.", rowsReturned);
conn.Close();
}
}
ExecuteNonQuery() tr về mt s kiu int cho biết số dòng b tác động
command.
ExecuteReader()
Phương thức này thực hiện các lệnh trả về một đối tượng SqlDataReader
hoặc OleDbDataReader. Đối tượng này thdùng để tạo ra các mu tin
như mã sau đây:
using System;
using System.Data.SqlClient;
public class ExecuteReaderExample
{
public static void Main(string[] args)
{
string source = "server=(local)\\NetSDK;" +
"uid=QSUser;pwd=QSPassword;" +
"database=Northwind";
string select = "SELECT ContactName,CompanyName FROM
Customers";