
Bạn có thể gọi phương thức CreateCommand() của mySqlConnection để tạo ra một đối tượng SqlCommand
mới cho kết nối này. phương thức CreateCommand() trả về một đối tượng SqlCommand mới cho đối tượng
SqlConnection.
Trong ví dụ sau đây, một đối tượng SqlCommand mới có tên mySqlCommand được gán tới đối tượng
SqlCommand được trả về bởi việc gọi phương thức CreateCommand() của mySqlConnection:
SqlCommand mySqlCommand = mySqlConnection.CreateCommand();
Bước 5: gán thuộc tính CommandText của đối tượng SqlCommand tới chuỗi
SELECT
Gán thuộc tính CommandText của đối tượng SqlCommand của bạn tới chuỗi SELECT được tạo ra trong bước
4. Thuộc tính CommandText chứa câu lệnh SQL bạn muốn thực hiện. Trong ví dụ sau đây, thuộc tính
CommandText của mySqlCommand được gán tới selectString:
mySqlCommand.CommandText = selectString;
Bước 6: Tạo ra một đối tượng SqlDataAdapter
Bạn sử dụng một đối tượng SqlDataAdapter để dời chuyển thông tin giữa đối tượng Dataset của bạn và cơ sở
dữ liệu. Bạn sẽ thấy cách tạo ra một đối tượng Dataset trong bước 8. Ví dụ sau đây tạo ra một đối tượng
SqlDataAdapter có tên mySqlDataAdapter:
SqlDataAdapter mySqlDataAdapter = new SqlDataAdapter();
Bước 7: Gán thuộc tính SelectCommand của đối tượng SqlAdapter tới đối tượng
SqlCommand
Thuộc tính SelectCommand chứa phát biểu SELECT bạn muốn chạy. Trong ví dụ sau đây, thuộc tính
SelectCommand của mySqlDataAdapter được gán tới mySqlCommand:
mySqlDataAdapter.SelectCommand = mySqlCommand;
Bước 8: Tạo ra một đối tượng Dataset để lưu giữ những kết quả của phát biểu SELECT
Bạn sử dụng một đối tượng Dataset để lưu giữ một bản sao cục bộ của thông tin được truy xuất từ cơ sở dữ liệu.
Ví dụ sau đây tạo ra một đối tượng Dataset có tên myDataSet:
DataSet myDataSet = new DataSet();
Bước 9: Mở kết nối cơ sở dữ liệu sử dụng phương thức Open() của đối tượng
SQLConnection
Ví dụ sau đây gọi phương thức Open() cho mySqlConnection:
mySqlConnection.Open();
Một khi bạn mở kết nối cơ sở dữ liệu, bạn có thể truy cập cơ sở dữ liệu.
Bước 10: Gọi phương thức Fill() của đối tượng SqlDataAdapter để truy xuất những hàng từ
bảng
Gọi phương thức Fill() của đối tượng SqlDataAdapter của bạn để truy xuất những hàng từ cơ sở dữ liệu, lưu
giữ những hàng này cục bộ trong một DataTable của đối tượng Dataset của bạn.

Phương thức Fill() là quá tải, và phiên bản bạn sẽ thấy trong ví dụ chấp nhận hai tham số:
Một đối tượng Dataset
Một chuỗi chứa tên của đối tượng DataTable được tạo ra trong Dataset .
Phương thức Fill() tạo ra một DataTable trong Dataset với tên chỉ định và chạy phát biểu SELECT. DataTable
được tạo ra trong Dataset của bạn rồi được cư trú với những hàng được truy xuất bởi phát biểu SELECT.
Ví dụ sau đây gọi phương thức Fill() của mySqlDataAdapter, chuyển MyDataSet và " Customers " tới phương
thức Fill():
mySqlDataAdapter.Fill(myDataSet, "Customers");
Phương thức Fill() tạo ra một đối tượng DataTable ở myDataSet tên Customers trong myDataset và cư trú nó
với những hàng được truy xuất bởi phát biểu SELECT. Bạn có thể truy cập những hàng này, Ngay cả khi ngắt
kết nối với cơ sở dữ liệu.
Bước 11: Đóng kết nối với Cơ sở dữ liệu
Đóng kết nối cơ sở dữ liệu sử dụng phương thức Close() của đối tượng SqlConnection được tạo ra trong bước
đầu tiên. Chẳng hạn:
mySqlConnection.Close();
Ghi nhớ: tất nhiên, bạn không cần phải đóng ngay lập tức kết nối cơ sở dữ liệu trước khi đọc những
hàng được lưu giữ cục bộ từ Dataset của bạn. Tôi đóng kết nối tại điểm này trong ví dụ để chỉ cho biết là
quả thực bạn có thể đọc những hàng được lưu giữ cục bộ - thậm chí khi đã ngắt ra khỏi cơ sở dữ liệu.
Bước 12: Lấy đối tượng DataTable từ đối tượng Dataset
Lấy đối tượng DataTable được tạo ra trong bước 10 từ đối tượng Dataset.
Bạn lấy một DataTable từ Dataset của bạn sử dụng thuộc tính Tables, nó trả lại một đối tượng
DataTableCollection . Để lấy DataTable riêng lẻ từ Dataset của bạn, bạn gởi tên của DataTable của bạn trong
cặp dấu móc ("Customers ", chẳng hạn) tới thuộc tính Tables. Thuộc tính Tables sẽ trả về DataTable mà bạn
yêu cầu, bạn có thể cất giữ nó trong một đối tượng DataTable mới mà bạn khai báo. Trong ví dụ sau đây,
myDataSet.Tables ["Customers "] trả về Customers DataTable được tạo ra trong myDataSet trong bước 10, và
lưu giữ DataTable được trả về trong myDataTable:
DataTable myDataTable = myDataSet.Tables["Customers"];
Ghi nhớ: Bạn cũng có thể chỉ rõ DataTable bạn muốn có bởi gởi một giá trị số tới những thuộc tính Tables .
Chẳng hạn, myDataSet.Table [0] cũng trả về Customers DataTable.
Bước 13: Trình bày những cột cho mỗi hàng trong DataTable
Trình bày những cột cho mỗi hàng trong DataTable, sử dụng một đối tượng DataRow để truy cập mỗi hàng
trong DataTable. Lớp DataTable định nghĩa một thuộc tính có tên Rows nó trả về một đối tượng
DataRowCollection chứa những đối tượng DataRow cất giữ trong DataTable này. Bạn có thể sử dụng những
thuộc tính Rows trong một vòng lặp foreach để lặp lại qua những đối tượng DataRow. Chẳng hạn:
foreach (DataRow myDataRow in myDataTable.Rows)
{
// ... access the myDataRow object
}

Mỗi đối tượng DataRow cất giữ những đối tượng DataColumn chứa những giá trị được truy xuất từ những cột
của bảng trong cơ sở dữ liệu. Bạn có thể truy cập những giá trị cột này bởi việc gởi tên của cột trong cặp dấu
móc đôi tới đối tượng DataRow. Chẳng hạn, myDataRow[ " CustomerID "] trả về giá trị của cột CustomerID.
Trong ví dụ sau đây, một vòng lặp foreach lặp lại qua những đối tượng DataRow trong myDataTable, và những
giá trị cột được trình bày cho mỗi hàng.
foreach (DataRow myDataRow in myDataTable.Rows)
{
Console.WriteLine("CustomerID = "+ myDataRow["CustomerID"]);
Console.WriteLine("CompanyName = "+ myDataRow["CompanyName"]);
Console.WriteLine("ContactName = "+ myDataRow["ContactName"]);
Console.WriteLine("Address = "+ myDataRow["Address"]);
}
Như bạn có thể thấy, tên của mỗi cột được gởi đi trong những dấu móc tới mỗi đối tượng DataRow, mà rồi trả
về giá trị cột.
Ghi nhớ: Bạn cũng có thể chỉ rõ cột bạn muốn có bởi việc gởi đi một giá trị số trong cặp dấu móc đôi.
Chẳng hạn, myDataRow[0] cũng trả về giá trị cột CustomerID.
Đặt mọi thứ cùng nhau
Danh sách 5.1 cho thấy một chương trình đầy đủ sử dụng những bước này. Chương trình này có tên
SelectIntoDataSet.cs và được định vị trong thư mục ch05.
Danh sách 5.1: SELECTINTODATASET.CS
/*
SelectIntoDataSet.cs illustrates how to perform a SELECT statement
and store the returned rows in a DataSet object
*/
using System;
using System.Data;
using System.Data.SqlClient;
class SelectIntoDataSet
{
public static void Main()
{
// step 1: formulate a string containing the details of the
// database connection
string connectionString =
"server=localhost;database=Northwind;uid=sa;pwd=sa";
// step 2: create a SqlConnection object to connect to the
// database, passing the connection string to the constructor
SqlConnection mySqlConnection =
new SqlConnection(connectionString);
// step 3: formulate a SELECT statement to retrieve the
// CustomerID, CompanyName, ContactName, and Address
// columns for the first ten rows from the Customers table
string selectString =
"SELECT TOP 10 CustomerID, CompanyName, ContactName, Address "+

"FROM Customers " +
"ORDER BY CustomerID";
// step 4: create a SqlCommand object to hold the SELECT statement
SqlCommand mySqlCommand = mySqlConnection.CreateCommand();
// step 5: set the CommandText property of the SqlCommand object to
// the SELECT string
mySqlCommand.CommandText = selectString;
// step 6: create a SqlDataAdapter object
SqlDataAdapter mySqlDataAdapter = new SqlDataAdapter();
// step 7: set the SelectCommand property of the SqlAdapter object
// to the SqlCommand object
mySqlDataAdapter.SelectCommand = mySqlCommand;
// step 8: create a DataSet object to store the results of
// the SELECT statement
DataSet myDataSet = new DataSet();
// step 9: open the database connection using the
// Open() method of the SqlConnection object
mySqlConnection.Open();
// step 10: use the Fill() method of the SqlDataAdapter object to
// retrieve the rows from the table, storing the rows locally
// in a DataTable of the DataSet object
Console.WriteLine("Retrieving rows from the Customers table");
mySqlDataAdapter.Fill(myDataSet, "Customers");
// step 11: close the database connection using the Close() method
// of the SqlConnection object created in Step 1
mySqlConnection.Close();
// step 12: get the DataTable object from the DataSet object
DataTable myDataTable = myDataSet.Tables["Customers"];
// step 13: display the columns for each row in the DataTable,
// using a DataRow object to access each row in the DataTable
foreach (DataRow myDataRow in myDataTable.Rows)
{
Console.WriteLine("CustomerID = "+ myDataRow["CustomerID"]);
Console.WriteLine("CompanyName = "+ myDataRow["CompanyName"]);
Console.WriteLine("ContactName = "+ myDataRow["ContactName"]);
Console.WriteLine("Address = "+ myDataRow["Address"]);
}
}
}
Đầu ra từ chương trình này như sau:
Retrieving rows from the Customers table
CustomerID = ALFKI
CompanyName = Alfreds Futterkiste
ContactName = Maria Anders

Address = Obere Str. 57
CustomerID = ANATR
CompanyName = Ana Trujillo Emparedados y helados
ContactName = Ana Trujillo
Address = Avda. de la Constitución 2222
CustomerID = ANTON
CompanyName = Antonio Moreno Taquería
ContactName = Antonio Moreno
Address = Mataderos 2312
CustomerID = AROUT
CompanyName = Around the Horn
ContactName = Thomas Hardy
Address = 120 Hanover Sq.
CustomerID = BERGS
CompanyName = Berglunds snabbköp
ContactName = Christina Berglund
Address = Berguvsvägen 8
CustomerID = BLAUS
CompanyName = Blauer See Delikatessen
ContactName = Hanna Moos
Address = Forsterstr. 57
CustomerID = BLONP
CompanyName = Blondesddsl père et fils
ContactName = Frédérique Citeaux
Address = 24, place Kléber
CustomerID = BOLID
CompanyName = Bólido Comidas preparadas
ContactName = Martín Sommer
Address = C/ Araquil, 67
CustomerID = BONAP
CompanyName = Bon app'
ContactName = Laurence Lebihan
Address = 12, rue des Bouchers
CustomerID = BOTTM
CompanyName = Bottom-Dollar Markets
ContactName = Elizabeth Lincoln
Address = 23 Tsawassen Blvd.
Tóm lược
Trong chương này, bạn đã có một tổng quan về những lớp ADO.NET , và bạn đã khảo sát một chương trình
đầy đủ kết nối tới một cơ sở dữ liệu, cất giữ những hàng cục bộ, ngắt kết nối cơ sở dữ liệu, và đọc nội dung của
những hàng cục bộ này trong khi ngắt kết nối với cơ sở dữ liệu.
ADO.NET cho phép bạn tương tác trực tiếp với một cơ sở dữ liệu sử dụng những đối tượng của những lớp
managed provider (nhà cung cấp được quản lý). Những đối tượng này cho phép bạn kết nối tới cơ sở dữ liệu và
thực hiện những câu lệnh SQL trong khi kết nối trực tiếp tới cơ sở dữ liệu. Bạn sử dụng những tập hợp khác
nhau của những lớp managed provider , phụ thuộc vào cơ sở dữ liệu Bạn sử dụng.
ADO.NET cũng cho phép bạn làm việc trong một trạng thái không kết nối. Khi làm điều này, bạn lưu trữ thông
tin từ một cơ sở dữ liệu vào trong bộ nhớ của máy tính trên đó chương trình của bạn đang chạy. Bạn lưu giữ
thông tin này sử dụng những đối tượng của những lớp Dataset.
Một số lớp "bộ cung cấp có quản lý SQL Server" bao gồm : SqlConnection, SqlCommand, SqlDataReader,
SqlDataAdapter, và SqlTransaction. Bạn sử dụng một đối tượng của lớp SqlConnection để kết nối tới một cơ sở
dữ liệu Máy chủ phục vụ SQL. Bạn sử dụng một đối tượng của lớp SqlCommand để đại diện cho một câu lệnh