Tài liệu Bài giảng Giới thiệu công nghệ ADO.NET: Giới thiệu công nghệ ADO.NET 
2 
Sơ lược lịch sử phát triển 
ODBC 
Driver 
Driver 
Driver 
Application 
Application 
Database 
Database 
DB API 
DB API 
DB API 
ODBC API 
DB API 
DB API 
DB API 
 Native API 
 Open DataBase Connectivity 
3 
ADO 
OLE DB 
Sơ lược lịch sử phát triển 
Application 
Non-Relational Data 
Relational Data 
 OLEDB và ADO 
ODBC 
Driver 
Driver 
Driver 
Provider 
Provider 
Provider 
Provider 
4 
ADO.NET 
ODBC 
Kiến trúc ADO.NET 
Application 
Non-Relational Data 
Relational Data OLE DB 
Oracle 
SQL Server 
ODBC 
OLE DB 
.NET Data Provider  ADO.NET 
5 
Kiến trúc ADO.NET 
6 
Cây phân cấp các đối tượng trong ADO.NET 
Kiến trúc ADO.NET 
7 
 Connected objects: là những đối tượng giao tiếp trực 
tiếp với CSDL. 
 Disconnected objects: cho phép các user làm việc với 
dữ liệu dạng offline (khi đã đóng kết nối cơ sở dữ liệu) 
Kiến trúc ADO.NET 
8 
Các thư viện truy xuất CSDL trong ADO.NET 
 System.Data.OleDb:...
                
              
                                            
                                
            
 
            
                 38 trang
38 trang | 
Chia sẻ: honghanh66 | Lượt xem: 1091 | Lượt tải: 0 
              
            Bạn đang xem trước 20 trang mẫu tài liệu Bài giảng Giới thiệu công nghệ ADO.NET, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Giới thiệu công nghệ ADO.NET 
2 
Sơ lược lịch sử phát triển 
ODBC 
Driver 
Driver 
Driver 
Application 
Application 
Database 
Database 
DB API 
DB API 
DB API 
ODBC API 
DB API 
DB API 
DB API 
 Native API 
 Open DataBase Connectivity 
3 
ADO 
OLE DB 
Sơ lược lịch sử phát triển 
Application 
Non-Relational Data 
Relational Data 
 OLEDB và ADO 
ODBC 
Driver 
Driver 
Driver 
Provider 
Provider 
Provider 
Provider 
4 
ADO.NET 
ODBC 
Kiến trúc ADO.NET 
Application 
Non-Relational Data 
Relational Data OLE DB 
Oracle 
SQL Server 
ODBC 
OLE DB 
.NET Data Provider  ADO.NET 
5 
Kiến trúc ADO.NET 
6 
Cây phân cấp các đối tượng trong ADO.NET 
Kiến trúc ADO.NET 
7 
 Connected objects: là những đối tượng giao tiếp trực 
tiếp với CSDL. 
 Disconnected objects: cho phép các user làm việc với 
dữ liệu dạng offline (khi đã đóng kết nối cơ sở dữ liệu) 
Kiến trúc ADO.NET 
8 
Các thư viện truy xuất CSDL trong ADO.NET 
 System.Data.OleDb: Access, SQL Server, Oracle 
 System.Data.SqlClient: SQL Server 
 System.Data.OracleClient: Oracle 
 Ghi chú: 
 Về mặt giao tiếp lập trình ứng dụng, cả 3 thư viện 
trên không khác biệt nhau nhiều. 
 Dùng thư viện System.Data.SqlClient sẽ truy xuất 
SQL Server nhanh hơn System.Data.OleDb 
 Dùng thư viện System.Data.OracleClient sẽ truy xuất 
Oracle nhanh hơn System.Data.OleDb 
9 
.NET Data Provider 
Ví dụ: OleDbConnection, SqlConnection, OracleConnection 
XXXConnection 
XXXDataAdapter 
XXXCommand 
XXXDataReader 
.NET Data Provider 
DataSet 
XXXParameter 
XXXTransaction 
Data Source 
(CSDL) 
10 
.NET Data Provider – Connection 
 Các đối tượng Connection tuân thủ IDbConnection 
interface. 
 ConnectionString: loại Data Source cần kết nối. 
 Open(): thiết lập kết nối đến Data Source. 
 Close(): ngắt kết nối đến Data Source. 
Data Source Application 
Connection 
11 
IDbConnection cnn = new 
SqlConnection(“server=localhost; database=Northwind; 
user id=sa; password=sa”); 
cnn.Open(); 
// Does something here. 
cnn.Close(); 
.NET Data Provider – Connection (tt) 
12 
.NET Data Provider - Command 
Data Source Application 
Connection 011010011 011010011 
Command 
13 
.NET Data Provider – xxxCommand 
 Các thuộc tính, phương thức thông dụng: 
 Connection: kết nối dùng để thực hiện câu lệnh. 
 CommandText: câu lệnh cần thực hiện trên Data Source. 
 CommandType: loại câu lệnh trong CommandText (Text, 
TableDirect, StoredProc). 
 ExecuteScalar(): thực hiện câu lệnh trong CommandText, 
kết quả trả về là một giá trị đơn. 
 ExecuteNonQuery(): thực hiện câu lệnh trong 
CommandText và không có kết quả trả về. 
 ExecuteReader(): thực hiện câu lệnh trong CommandText, 
kết quả trả về là một DataReader. 
14 
IDbConnection cnn = new 
SqlConnection(“server=localhost; database=Northwind; 
user id=sa; password=sa”); 
IDbCommand cmd = new SqlCommand(); 
cmd.Connection = cnn; 
cmd.CommandText = “SELECT COUNT(*) FROM Orders”; 
cmd.CommandType = CommandType.Text; 
cnn.Open(); 
int count = (int)cmd.executeScalar(); 
cnn.Close(); 
.NET Data Provider – xxxCommand (tt) 
15 
IDbConnection cnn = new 
SqlConnection(“server=localhost; database=QLHS; user 
id=sa; password=sa”); 
IDbCommand cmd = new SqlCommand(); 
cmd.Connection = cnn; 
cmd.CommandText = 
 “INSERT INTO HocSinh(id_hocsinh, tenhocsinh, dtb) 
 VALUES(5, „Nguyễn Văn A‟, 8.5)”; 
cmd.CommandType = CommandType.Text; 
cnn.Open(); 
cmd.executeNonQuery(); 
cnn.Close(); 
.NET Data Provider – xxxCommand (tt) 
16 
.NET Data Provider - Parameter 
Mục đích sử dụng: 
 Một vài giá trị trong câu lệnh chỉ biết khi thực hiện câu 
lệnh. 
 Cần thực hiện câu lệnh nhiều lần với các giá trị khác 
nhau. 
 Các bước thực hiện: 
 Tham số hóa câu lệnh: ? hoặc @[tên tham số] 
 Tạo các parameters tương ứng cho command. 
 Đặt giá trị cho các parameter mỗi khi dùng command 
thực hiện câu lệnh. 
17 
.NET Data Provider – Parameter(tt) 
 Tham số hóa 
 SQL Data Provider: 
cmd.CommandText = 
 “SELECT * FROM HocSinh WHERE tenhocsinh = @ten”; 
cmd.CommandText = 
 “INSERT INTO HocSinh(id_hocsinh, tenhocsinh, dtb)” + 
 “VALUES(@id, @ten, @dtb)”; 
 Các provider khác: 
cmd.CommandText = 
 “SELECT * FROM HocSinh WHERE tenhocsinh = ?”; 
cmd.CommandText = 
 “INSERT INTO HocSinh(id_hocsinh, tenhocsinh, dtb)” + 
 “VALUES(?, ?, ?)”; 
18 
 Tạo các parameter 
cmd.Parameters.Add(“@id”, 5); 
cmd.Parameters.Add(“@ten”, “Nguyễn Văn A”); 
cmd.Parameters.Add(“@dtb”, 8.5); 
 Đặt giá trị cho các parameter 
foreach (Student s in studentList) 
{ 
 cmd.Parameters[“@id”] = i; 
 cmd.Parameters[“@ten”] = s.studentName; 
 cmd.Parameters[“@dtb”] = s.studentMarks; 
 cmd.ExecuteNonQuery(); 
} 
.NET Data Provider – Parameter(tt) 
19 
.NET Data Provider – DataReader 
Data Source Application 
Connection 
Command 
BookID BookName Author 
i Book i Author i 
DataReader 
ExecuteReader() Read() 
011010011 011010011 
20 
 Các đối tượng DataReader tuân thủ interface 
IDataReader. 
 HasRow: cho biết còn dữ liệu để đọc nữa không. 
 Read(): đọc một mẫu tin vào DataReader. 
 Toán tử [ i ]: truy xuất đến cột i trong mẫu tin đọc được. 
 Close(): đóng DataReader. 
 Lưu ý: 
 Truy xuất tuần tự và không quay lui. 
 Không cập nhật dữ liệu. 
 Cơ chế kết nối. 
.NET Data Provider – DataReader 
21 
SqlConnection cnn = new SqlConnection(“server=localhost; 
database=Northwind; user id=sa; password=sa”); 
SqlCommand cmd = new SqlCommand(); 
cmd.Connection = cnn; 
cmd.CommandText = “select * from Orders”; 
cmd.CommandType = CommandType.Text; 
cnn.Open(); 
IDataReader dr = cmd.executeReader(); 
while (dr.Read()) 
 MessageBox.Show(dr[“CustomerID”].ToString()); 
dr.Close(); 
cnn.Close(); 
.NET Data Provider – DataReader 
22 
.NET Data Provider - DataAdapter 
SelectCommand 
UpdateCommand 
InsertCommand 
DeleteCommand 
DataAdapter 
Data Source 
DataSet 
 Các đối tượng DataAdapter tuân thủ interface IDbDataAdapter. 
 Fill(DataSet): dùng SelectCommand lấy dữ liệu từ Data 
Source đổ vào DataSet. 
 Update(DataSet): dùng InsertCommand, UpdateCommand 
và DeleteCommand cập nhật dữ liệu trong DataSet vào 
Data Source. 
23 
SqlConnection cnn = new 
SqlConnection(“server=localhost; database=Northwind; 
user id=sa; password=sa”); 
SqlDataAdapter da = new SqlDataAdapter(“select * from 
Orders”, cnn) 
DataSet ds = new DataSet(); 
da.Fill(ds); 
// Does something on the DataSet. 
da.Update(ds); 
.NET Data Provider - DataAdapter 
24 
DataSet 
 Có thể nói DataSet là cơ sở dữ liệu được lưu trữ trong bộ 
nhớ chính (in-memory database). 
 Cơ chế không kết nối 
Data Source 
DataSet 
 DataSet là gì? 
25 
DataSet 
DataSet 
DataTable 
Columns 
Rows 
DataColumn 
DataRow 
Tables 
Relations DataRelation 
26 
DataSet - DataTable 
 DataTable thể hiện một bảng trong cơ sở dữ liệu. 
 Các thuộc tính và phương thức: 
 TableName: tên bảng. 
 Columns: danh sách các cột (DataColumn). 
 Rows: danh sách các mẫu tin (DataRow). 
 PrimaryKey: danh sách các cột làm khóa chính 
(DataColumn). 
 NewRow(): tạo một mẫu tin mới. 
27 
DataSet - DataColumn 
 DataColumn thể hiện một cột trong bảng. 
 Các thuộc tính và phương thức: 
 ColumnName: tên cột. 
 DataType: kiểu dữ liệu cột. 
28 
DataSet - DataRow 
 DataRow: thể hiện một mẫu tin trong bảng. 
 Các thuộc tính và phương thức: 
 RowState: trạng thái của mẫu tin (Added, Modified, 
Deleted, Unchanged, Detach). 
 Toán tử [ i ]: truy xuất đến cột i của mẫu tin. 
 Delete(): đánh dấu xóa mẫu tin. 
29 
Các bước thao tác CSDL 
 Bước 1: Tạo chuỗi kết nối cnStr 
 Bước 2: Kết nối CSDL với đối tượng XXXConnection 
 Bước 3: Tạo chuỗi strSQL thao tác CSDL 
 Bước 4: Thực thi chuỗi strSQL với đối tượng 
XXXCommand hoặc XXXDataAdapter 
 Bước 5: Đóng kết nối 
30 
Các phương thức thông dụng 
1. LayDanhSach (kết quả trả về là một ArrayList) 
2. LayBang (kết quả trả về là DataTable) 
3. CapNhatBang 
4. TimKiem (đối tượng theo mã) 
5. Them (1 đối tượng) 
6. Xoa (đối tượng theo mã) 
7. Sua (1 đối tượng) 
8.  
31 
Bước 1: Tạo chuỗi kết nối 
 CSharp: 
 Kết nối với CSDL Access: 
String cnStr = "Provider = Microsoft.Jet.OLEDB.4.0; 
Data Source = DeAnCongTy.mdb"; 
 Kết nối với CSDL SQL Server: 
 String cnStr = "Provider = Server=localhost; 
database=Northwind; user id=sa; password=sa"; 
32 
 Lưu ý: khi kết nối với CSDL Access, nếu không chỉ ra 
đường dẫn tuyệt đối đến tập tin CSDL thì tập tin CSDL 
phải nằm cùng với thư mục chứa tập tin thực thi (.exe) 
 Còn nhiều dạng câu kết nối, như với Oracle, kết nối qua 
đường mạng, kết nối có bảo mật, . SV có thể tìm kiếm 
thêm trên Google qua các tổ hợp từ khóa: connection, 
string, CSharp, VB, NET, 2005,  
Bước 1: Tạo chuỗi kết nối 
33 
Bước 2: Mở kết nối với XXXConnection 
 CSharp: 
OleDbConnection cn = new OleDbConnection(cnStr); 
cn.Open(); 
34 
Bước 3: Tạo chuỗi strSQL thao tác CSDL 
 CSharp: 
String strSQL = "Select * From NhanVien"; 
 Ghi chú: 
 Trong những câu SQL phức tạp có thể sẽ phải cộng 
thêm chuỗi hoặc thêm parameter 
35 
Bước 4: Thực thi chuỗi strSQL với XXXDataAdapter 
 CSharp: 
DataTable dt = new DataTable(); 
SqlDataAdapter da = new SqlDataAdapter(strSQL, cn); 
da.Fill(dt); 
36 
Bước 4: Thực thi chuỗi strSQL với XXXCommand 
 CSharp: 
SqlCommand cmd = new SqlCommand(strSQL, cn); 
SqlDataReader dr = cmd.ExecuteReader(); 
 Ghi chú: 
 Với những câu SQL phức tạp có thể phải khởi tạo 
các giá trị của các parameter trước khi thực thi chuỗi 
strSQL 
37 
Bước 5: Đóng kết nối 
 CSharp: 
cn.Close(); 
 Thảo luận: 
 Có cần thiết phải mở/đóng kết nối với mỗi lần thao 
tác với CSDL? Chỉ mở/đóng 1 lần vào đầu/cuối 
chương trình? 
 SV tự tìm hiểu Connection Pool 
38 
            Các file đính kèm theo tài liệu này:
 phu_luc_ket_noi_csdl_voi_ado_net_728.pdf phu_luc_ket_noi_csdl_voi_ado_net_728.pdf