Bn có th gi phương thc CreateCommand() ca mySqlConnection để to ra mt đối tượng SqlCommand
mi cho kết ni này. phương thc CreateCommand() tr v mt đối tượng SqlCommand mi cho đối tượng
SqlConnection.
Trong ví d sau đây, mt đối tượng SqlCommand mi có tên mySqlCommand đưc gán ti đối tượng
SqlCommand được tr v bi vic gi phương thc CreateCommand() ca mySqlConnection:
SqlCommand mySqlCommand = mySqlConnection.CreateCommand();
Bước 5: gán thuc tính CommandText ca đối tượng SqlCommand ti chui
SELECT
Gán thuc tính CommandText ca đối tượng SqlCommand ca bn ti chui SELECT được to ra trong bước
4. Thuc tính CommandText cha câu lnh SQL bn mun thc hin. Trong ví d sau đây, thuc tính
CommandText ca mySqlCommand được gán ti selectString:
mySqlCommand.CommandText = selectString;
Bước 6: To ra mt đối tượng SqlDataAdapter
Bn s dng mt đối tượng SqlDataAdapter để di chuyn thông tin gia đối tượng Dataset ca bn và cơ s
d liu. Bn s thy cách to ra mt đối tượng Dataset trong bước 8. Ví d sau đây to ra mt đối tượng
SqlDataAdapter có tên mySqlDataAdapter:
SqlDataAdapter mySqlDataAdapter = new SqlDataAdapter();
Bước 7: Gán thuc tính SelectCommand ca đối tượng SqlAdapter ti đối tượng
SqlCommand
Thuc tính SelectCommand cha phát biu SELECT bn mun chy. Trong ví d sau đây, thuc tính
SelectCommand ca mySqlDataAdapter được gán ti mySqlCommand:
mySqlDataAdapter.SelectCommand = mySqlCommand;
Bước 8: To ra mt đối tượng Dataset để lưu gi nhng kết qu ca phát biu SELECT
Bn s dng mt đối tượng Dataset để lưu gi mt bn sao cc b ca thông tin được truy xut t cơ s d liu.
Ví d sau đây to ra mt đối tượng Dataset có tên myDataSet:
DataSet myDataSet = new DataSet();
Bước 9: M kết ni cơ s d liu s dng phương thc Open() ca đối tượng
SQLConnection
Ví d sau đây gi phương thc Open() cho mySqlConnection:
mySqlConnection.Open();
Mt khi bn m kết ni cơ s d liu, bn có th truy cp cơ s d liu.
Bước 10: Gi phương thc Fill() ca đối tượng SqlDataAdapter để truy xut nhng hàng t
bng
Gi phương thc Fill() ca đối tượng SqlDataAdapter ca bn để truy xut nhng hàng t cơ s d liu, lưu
gi nhng hàng này cc b trong mt DataTable ca đối tượng Dataset ca bn.
Phương thc Fill() là quá ti, và phiên bn bn s thy trong ví d chp nhn hai tham s:
Mt đối tượng Dataset
Mt chui cha tên ca đối tượng DataTable được to ra trong Dataset .
Phương thc Fill() to ra mt DataTable trong Dataset vi tên ch định và chy phát biu SELECT. DataTable
được to ra trong Dataset ca bn ri được cư trú vi nhng hàng được truy xut bi phát biu SELECT.
Ví d sau đây gi phương thc Fill() ca mySqlDataAdapter, chuyn MyDataSet và " Customers " ti phương
thc Fill():
mySqlDataAdapter.Fill(myDataSet, "Customers");
Phương thc Fill() to ra mt đối tượng DataTable myDataSet tên Customers trong myDataset và cư trú nó
vi nhng hàng được truy xut bi phát biu SELECT. Bn có th truy cp nhng hàng này, Ngay c khi ngt
kết ni vi cơ s d liu.
Bước 11: Đóng kết ni vi Cơ s d liu
Đóng kết ni cơ s d liu s dng phương thc Close() ca đối tượng SqlConnection được to ra trong bước
đầu tiên. Chng hn:
mySqlConnection.Close();
Ghi nh: tt nhiên, bn không cn phi đóng ngay lp tc kết ni cơ s d liu trước khi đọc nhng
hàng được lưu gi cc b t Dataset ca bn. Tôi đóng kết ni ti đim này trong ví d để ch cho biết là
qu thc bn có th đọc nhng hàng được lưu gi cc b - thm chí khi đã ngt ra khi cơ s d liu.
Bước 12: Ly đối tượng DataTable t đối tượng Dataset
Ly đối tượng DataTable được to ra trong bước 10 t đối tượng Dataset.
Bn ly mt DataTable t Dataset ca bn s dng thuc tính Tables, nó tr li mt đối tượng
DataTableCollection . Để ly DataTable riêng l t Dataset ca bn, bn gi tên ca DataTable ca bn trong
cp du móc ("Customers ", chng hn) ti thuc tính Tables. Thuc tính Tables s tr v DataTable mà bn
yêu cu, bn có th ct gi nó trong mt đối tượng DataTable mi mà bn khai báo. Trong ví d sau đây,
myDataSet.Tables ["Customers "] tr v Customers DataTable được to ra trong myDataSet trong bước 10, và
lưu gi DataTable được tr v trong myDataTable:
DataTable myDataTable = myDataSet.Tables["Customers"];
Ghi nh: Bn cũng có th ch rõ DataTable bn mun có bi gi mt giá tr s ti nhng thuc tính Tables .
Chng hn, myDataSet.Table [0] cũng tr v Customers DataTable.
Bước 13: Trình bày nhng ct cho mi hàng trong DataTable
Trình bày nhng ct cho mi hàng trong DataTable, s dng mt đối tượng DataRow để truy cp mi hàng
trong DataTable. Lp DataTable định nghĩa mt thuc tính có tên Rows nó tr v mt đối tượng
DataRowCollection cha nhng đối tượng DataRow ct gi trong DataTable này. Bn có th s dng nhng
thuc tính Rows trong mt vòng lp foreach để lp li qua nhng đối tượng DataRow. Chng hn:
foreach (DataRow myDataRow in myDataTable.Rows)
{
// ... access the myDataRow object
}
Mi đối tượng DataRow ct gi nhng đối tượng DataColumn cha nhng giá tr được truy xut t nhng ct
ca bng trong cơ s d liu. Bn có th truy cp nhng giá tr ct này bi vic gi tên ca ct trong cp du
móc đôi ti đối tượng DataRow. Chng hn, myDataRow[ " CustomerID "] tr v giá tr ca ct CustomerID.
Trong ví d sau đây, mt vòng lp foreach lp li qua nhng đối tượng DataRow trong myDataTable, và nhng
giá tr ct được trình bày cho mi 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ư bn có th thy, tên ca mi ct được gi đi trong nhng du móc ti mi đối tượng DataRow, mà ri tr
v giá tr ct.
Ghi nh: Bn cũng có th ch rõ ct bn mun có bi vic gi đi mt giá tr s trong cp du móc đôi.
Chng hn, myDataRow[0] cũng tr v giá tr ct CustomerID.
Đặt mi th cùng nhau
Danh sách 5.1 cho thy mt chương trình đầy đủ s dng nhng bước này. Chương trình này có tên
SelectIntoDataSet.cs và đưc định v trong thư mc 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, bn đã có mt tng quan v nhng lp ADO.NET , và bn đã kho sát mt chương trình
đầy đủ kết ni ti mt cơ s d liu, ct gi nhng hàng cc b, ngt kết ni cơ s d liu, và đọc ni dung ca
nhng hàng cc b này trong khi ngt kết ni vi cơ s d liu.
ADO.NET cho phép bn tương tác trc tiếp vi mt cơ s d liu s dng nhng đối tượng ca nhng lp
managed provider (nhà cung cp được qun lý). Nhng đối tượng này cho phép bn kết ni ti cơ s d liu và
thc hin nhng câu lnh SQL trong khi kết ni trc tiếp ti cơ s d liu. Bn s dng nhng tp hp khác
nhau ca nhng lp managed provider , ph thuc vào cơ s d liu Bn s dng.
ADO.NET cũng cho phép bn làm vic trong mt trng thái không kết ni. Khi làm điu này, bn lưu tr thông
tin t mt cơ s d liu vào trong b nh ca máy tính trên đó chương trình ca bn đang chy. Bn lưu gi
thông tin này s dng nhng đối tượng ca nhng lp Dataset.
Mt s lp "b cung cp có qun lý SQL Server" bao gm : SqlConnection, SqlCommand, SqlDataReader,
SqlDataAdapter, và SqlTransaction. Bn s dng mt đối tượng ca lp SqlConnection để kết ni ti mt cơ s
d liu Máy ch phc v SQL. Bn s dng mt đối tượng ca lp SqlCommand để đại din cho mt câu lnh