Các loại database driver JDBC Java Database Connectivity driver: ▪ Được tích hợp trong máy ảo java JVM ▪ Hỗ trợ CSDL sử dụng ODBC, Oracal, ADO.Net provider: ▪ API của .NET Framework
Trang 1Truy xuất cơ sở dữ liệu với
ADO.NET
Lập trình ứng dụng quản lý 1
ThS Ngô Chánh Đức
ĐHQG HCM – TRƯỜNG ĐH KHOA HỌC TỰ NHIÊN
KHOA CÔNG NGHỆ THÔNG TIN
Trang 2Giới thiệu về ADO.NET
Lập trình ứng dụng quản lý 1
Trang 3Database driver
Database driver – Trình điều kiển CSDL:
▪ Thành phần trung gian giữa hệ quản trị CSDL và bên ngoài (ứng dụng)
Database driver DBMSApplication
Trang 4Các loại database driver
ODBC driver (Open database connectivity):
▪ phát triển bởi Microsoft
▪ Hỗ trợ bởi Microsoft SQL Server, MySQL,
PostgreSQL, Oracle
OLEDB provider
▪ Microsoft OLE DB Provider for ODBC
▪ Microsoft OLE DB Provider for Oracle
▪ Microsoft OLE DB Provider for Microsoft Jet
Trang 5Các loại database driver
JDBC (Java Database Connectivity) driver:
▪ Được tích hợp trong máy ảo java JVM
▪ Hỗ trợ CSDL sử dụng ODBC, Oracal,
ADO.Net provider:
▪ API của NET Framework
▪ Hỗ trợ CSDL SQL Server, Orcal, Access,
Trang 6Thư viện ADO.NET
Phát triển từ thành phần xử lý dữ liệu ADO
(ActiveX Data Object)
Có thể thao tác với dữ liệu kết nối, không
kết nối và XML
Là một thư viện trong Microsoft NET
Framework
Trang 7Đặc điểm thư viện ADO.NET
Interoperability – Tương tác giữa nhiều hệ
thống
▪ Sử dụng định dạng XML để đóng gói dữ liệu sử dụng được HTTP
Scalability – Hỗ trợ nhiều người dùng
▪ Sử dụng dữ liệu ở dạng disconnected data
▪ Sử dụng Connection pooling để giữ kết nối
Productivity – Mở rộng khả năng làm việc với
CSDL
Performance – Hiệu suất
Trang 8Kiến trúc ADO.NET
Trang 9.NET Data Provider và DataSet
Trang 10Connected Objets và Disconnected Objects
Trang 11 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)
Trang 12.NET Data Provider
Dùng để kết nối với CSDL, thực hiện lệnh và
Trang 13Các bộ lớp đối tượng của
.NET Data Provider
Ví dụ: OleDb Connection, Sql Connection, Oracle Connection
Trang 14Các thư viện truy xuất CSDL trong
ADO.NET
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 lắm
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
Trang 15Truy xuất CSDL với SqlClient và OleDb
Trang 16DataSet
Trang 18 Dùng để lưu trữ dữ liệu trên bộ nhớ
DataTable DataRowCollection DataColumnCollection ConstraintCollection
Trang 20 Thêm 1 cột cho bảng
Trang 21 Cột có giá trị tự tăng
Trang 22Xác định khóa chính
Trang 23Ràng buộc của Data Table
ForeignKeyConstraint
Trang 24Thêm dữ liệu
Tạo mới DataRow và thêm vào DataTable
Trang 25Xem dữ liệu
Sử dụng phương thức Select
Trang 26Thao tác CSDL với NET Data Provider
Trang 27Cá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 truy vấn strSQL thao tác CSDL
Bước 4
Bước 5 • Đóng kết nối
Trang 28Bước 1 : Tạo chuỗi kết nối
Kết nối với CSDL Access:
Trang 29Chuỗi kết nối
Câu hỏi:
▪ nếu không chỉ ra đường dẫn tuyệt đối đến tập tin
CSDL thì tập tin CSDL sẽ được hiểu nằm ở đâu?
▪ Làm sao biết được các connection string của các loại
cơ sở dữ liệu khác
Trang 30Bước 2: Mở kết nối bằng XXXConnection
Trong trường hợp thao tác với OleDb
OleDbConnection cn = new OleDbConnection(cnStr); cn.Open();
Trong trường hợp thao tác với SqlClient
SqlConnection cn = new SqlConnection(cnStr);
cn.Open();
Trang 31Bước 3: Tạo chuỗi strSQL thao tác
CSDL
Ví dụ: Lấy danh sách tất cả học sinh
String strSQL = "Select * From HocSinh";
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
Trang 32Bước 4: Thực thi chuỗi strSQL với XXXDataAdapter
Ví dụ thao tác với OleDb
DataTable dt = new DataTable();
OleDbDataAdapter(strSQL, cn);
da.Fill(dt);
Trang 33Bước 4: Thực thi chuỗi strSQL với
XXXCommand
Ví dụ thao tác với OleDb
OleDbCommand cmd = new OleDbCommand(strSQL, cn); OleDbDataReader dr = cmd.ExecuteReader();
Trang 36us/dotnet/framework/data/adonet/ole-db-odbc-and-DataTable vs DataReader
DataTable & XXX DataReader: đều lưu giữ kết quả truy
vấn.
DataTable:
▪ Truy xuất ngẫu nhiên Duyệt tới, lui đều được.
▪ Chiếm nhiều bộ nhớ, thường dùng để hiển thị dữ liệu trên
▪ Là kết quả trả về khi thực thi câu query với
XXX DataAdapter
DataReader:
▪ Liên kết với kết nối CSDL.
▪ Truy xuất tuần tự Chỉ duyệt tới, không duyệt lui.
▪ Chiếm ít bộ nhớ Thường dùng để load dữ liệu lên
▪ Là kết quả trả về khi thực thi câu query với
XXX Command
Trang 37Demo