Giống như hầu hết các thành phần của .NET Framework, ADO.NET
không chỉ là vỏ bọc của một vài API sẵn có. Nó chỉ giống ADO ở cái tên - các lớp
và phương thức truy xuất dữ liệu đều khác hoàn toàn.
ADO (Microsoft's ActiveX Data Objects) là một thư viên của các
thành phần COM đã từng được ca ngợi trong một vài năm trở lại đây. Phiên bản
hiện tại là 2.7, các thành phần chủ yếu của ADO là Connection, Command, Recordset, và các Field object. Một
connection có thể mở cơ sở dữ liệu, một vài dữ liệu được chọn vào một recordset,
bao gồm các trường, dữ liệu này sau đó có thể thao tác, cập nhập lên server, và
connection cần phải được đóng lại. ADO cũng giới thiệu một disconnected
recordset, cái được dùng khi không muốn giữ kếp nối trong một thời gian dài.
Có một vài vấn đề với ADO đó là sự không hài lòng về địa chỉ, sự
cồng kềnh của một disconnected recordset. Hỗ trợ này không cần thiết với sự tiến
hoá của tin học "web-centric", vì vậy nó cần được loại bỏ. Có một số giống nhau
giữa lập trình ADO.NET và ADO (không phải ở cái tên), vì thế việc chuyển từ ADO
không qua khó khăn. Hơn thế nữa, nếu bạn dùng SQL Server, có một bộ các quản mới
rất tuyệt cho viêc thao tác bên ngoài cơ sở dữ liệu. Chừng đó lí do cũng đủ để
các bạn quan tâm đến ADO.NET.
ADO.NET chứa hai không gian tên cơ sơ dữ liệu - một cho SQL
Server, và một cái khác cho các cơ sở dữ liệu được trình bày thông qua một giao
diện OLE DB. Nếu cơ sở dữ liệu của bạn chọn là một bộ phận của OLE DB, bạn có
thể dễ dàng kết nối với nó từ .NET - chỉ cần dùng các lớp OLE DB và kết nối
thông qua các driver cơ sở dữ liêu hiện hành của bạn.
1. Các Namespace
Tất cả các ví dụ trong chương này truy xuất dữ liệu trong
một vài cách. Các không gian tên sau chỉ ra các lớp và các giao diện được dùng
cho việc truy xuất dữ liệu trong .NET:
-
System.Data - Các lớp truy xuất dữ liệu chung
-
System.Data.Common - Các lớp dùng chung bởi các data provider khác nhau
-
System.Data.OleDb - Các lớp của OLE DB provider
-
System.Data.SqlClient - Các lớp của SQL Server provider
-
System.Data.SqlTypes - Cac kiểu của SQL Server
Các lớp chính trong ADO.NET được liệt kê dưới đây:
2. Các lớp dùng chung
ADO.NET chứa một số lớp được dùng không quan tâm là bạn đang
dùng các lớp của SQL Server hay là các lớp của OLE DB.
Các lớp trong không gian tên System.Data
được liệt kê sau đây:
-
DataSet - Đối tượng này chứa một bộ các DataTable, có thể bao gồm quan hệ giữa các bảng, và nó được thiết kế cho truy xuất dữ liệu không kết nối.
-
DataTable - Một kho chứa dữ liệu. Một DataTable bao gồm một hoặc nhiều DataColumns, và khi được tạo ra nó sẽ có một hoặc nhiều DataRows chứa dữ liệu.
-
DataRow - Một bộ giá trị, có bà con với một dòng trong bảng cơ sở dữ liệu, hoặc một dòng của bảng tính.
-
DataColumn - Chứa cá định nghĩa của một cột, chẳng hạn như tên và kiểu dữ liệu.
-
DataRelation - Một liên kết giữa hai DataTable trong một DataSet. Sử dụng cho khóa ngoại và các mối quan hệ chủ tớ.
-
Constraint - Định nghĩa một qui tắt cho một DataColumn (hoặc môt bộ các cột dữ liệu), như các giá trị là độc nhất.
Sau đây là hai lớp được tìm thấy trong không gian tên System.Data.Common:
-
DataColumnMapping - Ánh xạ tên của một cột từ cơ sở dữ liệu vào tên của một cột trong một DataTable.
-
DataTableMapping - Ánh xạ tên của một bảng từ cơ sở dữ liệu vào một bảng trong một DataSet.
3. Các lớp cơ sở dữ liệu chuyên biệt
Bổ sung cho các lớp dùng chung ở trên, ADO.NET có một số các
lớp dữ liệu chuyên biệt được đưa ra dưới đây. Các lớp này thực thi một bộ các
giao diện chuẩn được định nghĩa trong không gian tên System.Data, cho phép sử dụng các lớp có cùng kiểu giao diện.
Ví dụ cả hai lớp SqlConnection và OleDbConnection thực thi giao diện IDbConnection.
-
SqlCommand, OleDbCommand - Một vỏ bọc của các câu lệnh SQL hoặc các lời gọi stored procedure.
-
SqlCommandBuilder, OleDbCommandBuilder - Một lớp sử dụng các câu lệnh SQL (chẳng hạn như các câu lệnh INSERT, UPDATE, vàDELETE) từ một câu lệnh SELECT.
-
SqlConnection, OleDbConnection - Kết nối với cơ sở dữ liệu. Giống như một ADO Connection.
-
SqlDataAdapter, OleDbDataAdapter - Một lớp giữ các câu lệnh select, insert, update, và delete, chúng được sử dụng để tạo một DataSet và cập nhật Database.
-
SqlDataReader, OleDbDataReader - Chỉ đọc, kết nối với data reader.
-
SqlParameter, OleDbParameter - Định nghĩa một tham số cho một stored procedure.
-
SqlTransaction, OleDbTransaction - Một giao tiếp cơ sở dữ liện, được bọc trong một đối tượng.
Một đặc tính quan trọng của các lớp ADO.NET là chúng được thiết kế
để làm việc trong môi trường không kết nối, đóng một vai trò quan trọng trong
thế giới "web-centric". Nó hiện được dùng để kiến trúc một server (chẳng hạn như
mua sách qua mạng) để kết nối một server, lấy một vài dữ liệu, và làm việc trên
những dữ liệu này trên PC khách trước khi kết nối lại và truyền dữ liệu trở lại
để xử lí.
ADO 2.1 giới thiệu recordset không kết nối, nó cho phép dữ liệu có
thể được lấy từ một cơ sở dữ liệu, được truyền cho trình khách để xử lí. Nó
thường khó xử dụng do cách ứng xử không kết không được thiết kế từ đâu. Các lớp
ADO.NET thì khác - Sql/OleDb
DataReader được thiết kết cho để dùng cho các cơ sở dữ
liệu offline.
Sử dụng các lớp và các giao diện để truy cập cơ sở dữ liệu trong được trình bày trong chương sau. Tôi chủ yếu tập trung vào các lớp Sql khi kết nối cơ sở dữ liệu, bởi vì các ví dụ được cài đặt một cơ sở dữ liệu MSDE (SQL Server). Trong hầu hết các trường hợp các lớp OleDb ứng sử tương tự như mã Sql.