ADO.NETcung cấp khả năng truy cập các
nguồn dữ liệu một cách nhất quán như SQL
Server, dữ liệu quản lý thông qua OLE DB và
XML
 ADO.NET bao gồm các trình cung cấp dữ liệu
.NET (.NET data provider) cho việc kết nối đến
cơ sở dữ liệu, thực thi một câu lệnh và truy
xuất kết quả
                
              
                                            
                                
            
                       
            
                 13 trang
13 trang | 
Chia sẻ: lylyngoc | Lượt xem: 1766 | Lượt tải: 1 
              
            Bạn đang xem nội dung tài liệu Chương IV: ADO.NET, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
5/10/2013
1
CHƯƠNG IV:
ADO.NET
5/10/2013 1
ADO.NET
 Tổng quan về ADO.NET
 Tạo kết nối đến CSDL.
 Các điều khiển ràng buộc danh sách(List-
Bound)
 Hiển thị DataSet vào điều khiển List-Bound 
5/10/2013 2
TỔNG QUAN VỀ ADO.NET 
 ADO.NET cung cấp khả năng truy cập các
nguồn dữ liệu một cách nhất quán như SQL
Server, dữ liệu quản lý thông qua OLE DB và
XML
 ADO.NET bao gồm các trình cung cấp dữ liệu
.NET (.NET data provider) cho việc kết nối đến
cơ sở dữ liệu, thực thi một câu lệnh và truy
xuất kết quả.
5/10/2013 3
TỔNG QUAN VỀ ADO.NET
 Đối tượng ADO.NET Dataset cũng có thể được
sử dụng một cách độc lập với .NET data
provider để quản lý dữ liệu thuộc những ứng
dụng hoặc những nguồn từ XML
 Lớp ADO.NET được tìm thấy trong namespace
System.Data, và được tích hợp với lớp XML
được tìm thấy trong namespace System.Xml
Connection
5/10/2013 4
5/10/2013
2
MôhìnhđốitượngADO.NET
5/10/2013 5
MôhìnhđốitượngADO.NET
5/10/2013 6
KHÔNG GIAN TÊN
 Không gian tên sử dụng trong ADO.NET 
gồm:
 System.Data
 System.Data.Common
 System.Data.SqlClient: dùng cho cơ sở dữ 
liệu SQL
 System.Data.OleDb dùng cho cơ sở dữ liệu 
access
5/10/2013 7
CẤU TRÚC CỦA ADO.NET
 ADO.NET Components được thiết kế để quản lý
việc truy cập dữ liệu từ nguồn dữ liệu. Có 2
thành phần chính trong ADO.NET:
 ADO.NET Dataset là thành phần chính của
kiến trúc kết nối gián đoạn của ADO.NET.
Dataset bao gồm tập hợp một hoặc nhiều đối
tượng DataTable
5/10/2013 8
5/10/2013
3
CẤU TRÚC CỦA ADO.NET
 NET Data Provider - một tập hợp các thành
phần bao gồm các đối tượng
Connection: cung cấp việc kết nối đến CSDL
Command :truy cập các câu lệnh CSDL
DataReader: cung cấp một luồng truy xuất DL
DataAdapter: cung cấp cầu nối giữa đối
tượng Dataset và CSDL. DataAdapter sử
dụng đối tượng Command để thực thi các
câu lệnh SQL
5/10/2013 9
CẤU TRÚC CỦA ADO.NET
5/10/2013 10
Các đối tượng trong ADO.Net
Đối tượng Connection
 Chức năng: Thiết lập kết nối đến cơ sở dữ liệu
 Kết nối với cơ sở dữ liệu access:
5/10/2013 11
OleDbConnection con;// Khai báo
String strcon;
strCon ="Provider=Microsoft.Jet.OleDb.4.0;Data Source =";
strCon = strCon + Server.MapPath(".") + "\\sv.mdb"; 
con = new OleDbConnection(strCon);
con.Open();
Kết nối với cơ sở dữ liệu Sql:
5/10/2013 12
SqlConnection con;// Khai báo
String strcon;
strCon=
“Server=ServerName;Database=DBName;uid=userName;pwd=password”;
con = new SqlConnection(strCon);
con.Open();
5/10/2013
4
 Cácphươngthức:
 ExecuteNonQuery():Thựcthinhữngcâulệnh
 như: INSERT, UPDATE or DELETE
 ExecuteScalar():Trảvềgiátrịđơntừmộttruyvấndữli
ệu. 
 ExecuteReader():Trảvềtậprecord. 
5/10/2013 13
Các phương thức của 
Connection
 Phương thức
 Open(): mở kết nối
 Close(): đóng kết nối
5/10/2013 14
Các đối tượng trong ADO.Net
 Đối tượng Command: thực thi câu lệnh SQL
hoặc một Stored procedure
 Một Data Command là một thể hiện của class
OleDbCommand hoặc class SqlCommand
5/10/2013 15
Các đối tượng trong ADO.Net
Các phương thức của DataCommand
 Cancel(): Huỷ bỏ thực thi của một 
SqlCommand
 CreateParameter():Tạo một thể hiện mới 
cho đối tượng SqlParameter.
5/10/2013 16
5/10/2013
5
Các đối tượng trong ADO.Net
 ExecuteNonQuery(): Thực thi một câu lệnh T-SQL
dựa vào Connection và trả về số mẫu tin bị ảnh
hưởng như UPDATE, INSERT, DELETE.
 ExecuteScalar(): Trả về giá trị đơn (Giá trị cụ thể
như 1 table, 1 record, 1 filed …) từ một truy vấn dữ
liệu.
 ExecuteReader(): Gửi CommandText đến
Connection và xây dựng một SqlDataReader, trả về
tập các records
5/10/2013 17
Các đối tượng trong ADO.Net
Các thuộc tính của Data Command
 Connection: Command tham chiếu đến một
connection, đối tượng này dùng để giao tiếp với
cơ sở dữ liệu, nhận hay trả về SqlConnection mà
command sử dụng
 CommandText: nhận hoặc trả về câu lệnh
T-Sql hay thủ tục để thực thi
5/10/2013 18
Các đối tượng trong ADO.Net
 CommandTimeout: nhận hay trả về thời gian 
chờ thực thi 
 CommandType: nhận/ trả về giá trị cho biết 
loại commandtext được gán, các giá trị gồm 
StoredProcedure, TableDirect,Text. Mặc định là 
Text
5/10/2013 19
OleDbCommand cmd = new OleDbCommand(strsql,con);
(với strsql là câu truy vấn cụ thể )
Các đối tượng trong ADO.Net
 DataReader: được sử dụng trong những ứng
dụng web với những thao tác ngắn với từng
yêu cầu, thường là chỉ để hiển thị dữ liệu.
 Có 2 loại DataReader: OleDbDataReader và
SqlDataReader.
 DataReader cung cấp cách truy xuất dữ liệu
forward-only, read – only.
5/10/2013 20
5/10/2013
6
Các đối tượng trong ADO.Net
 Để dùng SqlDataReader phải khai báo một
SqlCommand. SqlCommand cung cấp một
phương thức ExecuteReader() mà nó trả về
một SqlDataReader khi thi hành một câu lệnh
SQL hoặc một stored Procedure
5/10/2013 21
Các đối tượng trong ADO.Net
5/10/2013 22
OleDbCommand cmd;
String strSql;
strSql = "select * from tblsv";
cmd = new OleDbCommand(strSql, con);
rd = cmd.ExecuteReader();
OleDbCommand cmd;
String strSql;
strSql = "select * from tblsv";
cmd = new OleDbCommand();
cmd.Connection = con; 
cmd.CommandText = strSql;
rd = cmd.ExecuteReader();
Tương đương
Các đối tượng trong ADO.Net
5/10/2013 23
Phương thức của DataReader
Read(): Đọc tới record cuối cùng EOF.
NextResult(): di chuyển tới record kế tiếp
Để đọc giá trị của từng field. Sử dụng câu lệnh:
DataReader rs;// Khai báo
rs[“NameFiled”] or rs[index] 
Chú ý: Nhớ Convert về kiểu chuỗi 
Example: varName=Convert.ToString(rs[“Name”])
5/10/2013 24
5/10/2013
7
Từng bước kết nối ADO.Net
 Để sử dụng DataReader cần phải thực hiện 
các bước sau:
 Tạo và mở kết nối CSDL Connection
 Tạo đối tượng Command
 TạoDataReader từ đối tượng Command
 Gọi phương thức ExecuteReader
 Sử dụng đối tượng DataReader
 Đóng đối tượng DataReader 
 Đóng đối tượng Connection
5/10/2013 25
Từng bước kết nối trong 
ADO.Net
5/10/2013 26
OleDbConnection con;
OleDbCommand cmd;
OleDbDataReader rs;
String strSQL,strCon;
strCon=“Information connect to Database”;
strSQL=“SQL statement”;
con=new OleDbConnection(strCon);
con.Open();
cmd=new OleDbCommand(strSQL);
cmd.Connection=con;
rs=cmd.ExecuteReader();// if strSQL is Select statement
Từng bước kết nối trong 
ADO.Net
5/10/2013 27
Sử dụng DataReader để chứa dữ liệu truy xuất được
while(rs.Read())
{
//varName=rs[“FieldName”];
//process varName according to application
}
Example
Danh Sach Khach Hang
Mã khách hàng Họ tên
KH098 Phan Hoai An
5/10/2013 28
Database chứa 1 table:
tblCustomer(CustomerID,Name)
Viết kết nối vào database và thực các công việc sau:
1) Hiển thị danh sách Customers ở dạng bảng sau:
2) Thêm 1 customer
3) Sửa đổi thông tin 1 customer
4) Xóa 1 customer
5/10/2013
8
5/10/2013 29
Answer 1)
protected void Page_Load(object sender, EventArgs e)
{
string strconn = "server=H52PC14;";
strconn += "database=Northwind;uid=sa;pwd=;"; 
SqlConnection conn=new SqlConnection(strconn);
string sql="SELECT EmployeeID,FirstName FROM Employees";
SqlCommand cmd=new SqlCommand(sql,conn);
conn.Open();
SqlDataReader dr;
dr=cmd.ExecuteReader();
while(dr.Read())
{
string text=dr["FirstName"].ToString();
string value=dr["EmployeeID"].ToString();
drCategory.Items.Add(new ListItem(text,value));
}
5/10/2013 30
Answer 2)
string strconn = "server=H52PC14;";
strconn += "database=Northwind;uid=sa;pwd=;";
SqlConnection conn = new SqlConnection(strconn);
//string sql ="select UserID,UserName from Users";
string sql="Insert into Users(UserName,UserID,Pass) values 
('miny','002','dfgg')";
//sql = sql + UserName + "'" + "," + "'" + UserID + "')";
SqlCommand cmd = new SqlCommand(sql, conn);
conn.Open();
SqlDataReader dr;
dr = cmd.ExecuteReader();
while (dr.Read())
{
ListBox1.Items.Add(dr[0].ToString());
5/10/2013 31
Answer 3) Delete record
protected void Page_Load(object sender, EventArgs e)
{
string strconn = "server=H52PC14;";
strconn += "database=Northwind;uid=sa;pwd=;";
SqlConnection conn = new SqlConnection(strconn);
string sql = "delete from Users where UserID='01'";
SqlCommand cmd = new SqlCommand(sql, conn);
conn.Open();
string a = cmd.ExecuteReader().ToString();
5/10/2013 32
Answer 4)
<%
….
strSQL=“update set Name=‘”+varName+”’ where 
CustomerID=‘“+ varID +”’”;
…..
cmd.ExecuteNonQuery();
%>
5/10/2013
9
Các đối tượng trong ADO.Net
5/10/2013 33
•DataTable
•DataSet
•DataAdapter
DataTable
5/10/2013 34
•DataView
•DataRowView
•DataColumn
•DataRow
•DataTable
DataTable
5/10/2013 35
•DataView
DataView dv=new DataView();
Thuộc tính của DataView
.Count : Trả về số records có trong the DataView
.RowFilter: Thiết lập hoặc trả về giá trị lọc theo 1 hàng bất 
kỳ sẽ hiển thị trên DataView.
.Sort: Sắp xếp thứ tự của 1 cột hay nhiều cột trong 
DataView. 
DataTable
5/10/2013 36
•DataView
Ví dụ về các thuộc tính của DataView
int num;
num=dv.Count;
dv.RowFilter=“Expression condition”;
dv.RowFilter=“FieldNameColumn>=10”;
dv.Sort=“List FieldName sort” ; //ASC, DESC
dv.Sort=“FieldName1,FieldName2 DESC”;
dv.Sort = "EMpID";
drView = dv.FindRows(EmpIDvalue); //drView is 
array
5/10/2013
10
DataTable
5/10/2013 37
•DataView
DataView dv=new DataView()
Method of DataView
FindRows: Trả về 1 mảng đối tượng DataRowView mà 
hàng đó sẽ tìm.
DataRowView[] drView;
dv.Sort=“FieldName”;
drView=dv.FindRows(value) 
// Với value: FieldName
DataTable
5/10/2013 38
•DataRowView
DataRowView drView=new DataRowView()
drView[i] or drView[“FieldNameColumn”] : giá trị trả về
String valueF;
valueF=drView[“StudentID”];
Or
valueF=drView[0];
DataTable
 DataColumn: Trình bày lược đồ của một cột 
trong một DataTable. Mỗi DataColumn có 
một thuộc tính DataType để xác định kiểu dữ 
liệu được lưu trữ trong DataColumn 
5/10/2013 39
DataColumn objColumn=new DataColumn(“ColumnName”);
DataTable dt=new DataTable();
Dt.Columns.Add(objColumn);
Đối tượng DataTable
 DataRow: trình bày một dòng dữ liệu trong 
DataTable 
 Khởi tạo:
5/10/2013 40
DataRow dr=new DataRow();
dr[i] or dr[“FieldName”]: //return value
5/10/2013
11
Đối tượng DataTable
 Các thuộc tính- phương thức của DataTable
 .Columns: trả về các cột trong Datatable
 .Columns.Count: trả về số cột trong bảng
 .Columns.Add(DataColumn): Thêm cột vào bảng
 .Rows :trả về các dòng, mỗi dòng là một đối 
tượng datarow
 .Rows.Count :trả về số dòng trong bảng
 .Rows.Add(DataRow):thêm một dòng vào bảng
5/10/2013 41
DataTable
ColName1 ColName2 …. ColNameN
Data11 Data12 … Data1N
… … … …
DataM1 DataM2 …. DataMN
5/10/2013 42
•DataTable: Là đối tượng để biểu diễn thông tin trong 
Dataset. 
DataColumn
DataRow
DataTable
5/10/2013 43
•DataTable
DataTable dt=new DataTable();
.Columns:Trả về tập hợp các columns có trong table 
dt. 
.Rows: Trả về tập hợp các rows có trong table dt.
dt.Columns
dt.Rows
Count
Add(objColumn)
Count
Add(objRow)
DataTable
5/10/2013 44
•DataTable
DefaultView: 1 đối ượng DataView (Dạng hiển thị khác của 
DataTable)
DataTable dt=new DataTable();
Phương thức DataTable
NewRow():Tạo 1 dòng mới DataRow
DataRow dr;
dr=dt.NewRow();
5/10/2013
12
DataSet
 DataSet bao gồm tập các đối tượng DataTable
mỗi DataTable điển hình tương đương với một
table hoặc là một view mà ta có thể thiết lập
mối quan hệ giữa chúng thông qua đối tượng
DataRelation.
 Dữ liệu trong DataSet có thể nhất quán bằng
cách sử dụng đối tượng UniqueConstraint và
ForeignKeyConstraint
5/10/2013 45
DataSet
5/10/2013 46
•DataSet
DataSet ds; //Khai báo
DataSet ds=new DataSet();//Khai báo và khởi tạo
.Tables: trả về tất cả các Table chứa trong Dataset.
ds.Tables[i] or ds.Tables[“tblName”] : Trả về đối 
tượng Table thứ i hoặc Table có “tên tblName
Count
Add(objTable)ds.Tables
DataSet public DataSet Laydulieu(string sql)
 {
 OleDbCommand cmd;
 cmd = new OleDbCommand(sql);
 OleDbDataAdapter da = new OleDbDataAdapter(sql,con);
 DataSet ds = new DataSet();
 da.Fill(ds);
 return ds; }
5/10/2013 47
DataAdapter
5/10/2013 48
•DataAdapter
The DataAdapter : Là đối tượng trung gian giữa 1 DataSet
và nguồn dữ liệu nhận được, dùng để lưu dữ liệu.
DataAdapter.Fill(ds) : Hiển thị data lên Dataset ds
OleDbDataAdapter class. 
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
(với cmd: OleDbCommand (Đã có))
5/10/2013
13
Example
5/10/2013 49
OleDbDataAdapter da;
da=new OleDbDataAdapter(strSQL,con);
DataSet ds=new DataSet(“tblA”);
da.Fill(ds);
DataTable dt;
dt=ds.Tables[“tblA”]; //ds.Tables[0]
foreach(DataRow dr in dt.Rows)
{
varName1= Convert.ToString(dr[“StudentID”]);
varName2= Convert.ToString(dr[“Name”]);
//process varName1, varName2
}
Khai báo chuỗi kết nối trong file 
Web.Config:
5/10/2013 50
<add key="ConnectionString"
value="Provider=Microsoft.Jet.OleDb.4.0;Data Source 
=HOADON.mdb"/>
Database được lưu trong thư mục gốc trong Visual Studio.Net:
C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\HOADON.mdb
Truy xuất chuỗi kết nối tại trang bất 
kỳ
5/10/2013 51
string strcon; 
strcon=ConfigurationManager.AppSettings["ConnectionString"];
con= new OleDbConnection(strcon);
con.ConnectionString=strcon;
con.Open();