5. Nội dung khóa luận
2.3.1. Giới thiệu khái quát ADO.NET
ADO.NET là một tập hợp hướng đối tượng các thư viện cho phép bạn tương tác với nguồn dữ liệu (data sources). Thường thì nguồn dữ liệu là một cơ sở dữ liệu, nhưng có thể cũng là 1 tập tin Text, bảng tính Excel hoặc 1 tập tin XML.
Sinh viên thực hiện: Trần Tuấn Mỹ 38
Data Providers
Ứng với mỗi cơ sở dữ liệu khác nhau thì ADO.NET cho phép chúng ta tương tác cũng khác nhau. Một Data Provider được sử dụng cho việc kết nối đến cơ sở dữ liệu, đọc, nhận, cập nhật,…trong DataSet và trong cơ sở dữ liệu. Tuy nhiên do có khá nhiều nguồn dữ liệu nên nảy sinh ra các giao thức cũng khác nhau, vì thế để giao tiếp được với cơ sở dữ liệu chúng ta phải sử dụng giao thức phù hợp với nguồn dữ liệu đó.
Các giao thức như ODBC, OleDb, hay khác hơn là các giao thức khác thông qua thư viện .NET của lớp ADO.NET.
Hình 2.2: Mô hình hướng đối tượng của ADO.NET
Một số giao thức thường dùng như:
Bảng 2.1: Một số giao thức thường dùng
Provider Name Tiền tố API Data Source
ODBC Data Provider Odbc Dùng cho cơ sở dữ liệu cũ
OleDb Data Provider OleDb Dùng cho cơ sở dữ liệu như Access, Excel Oracle Data Provider Oracle Dùng cho cơ sở dữ liệu Oracle
SQL Data Provider Sql Dùng cho cơ sở dữ liệu SQL Server
Borland Data Provider Bdp Dùng cho cơ sở dữ liệu Interbase, SQL Server, IBM DB2, Oracle
Sinh viên thực hiện: Trần Tuấn Mỹ 39
ADO.NET Objects
ADO.NET bao gồm nhiều đối tượng giúp chúng ta làm việc với dữ liệu. Một số đối tượng đó là:
SqlConnection Object: Là đối tượng kết nối với cơ sở dữ liệu. Kết nối này nhằm xác định máy chủ database server, tên cơ sở dữ liệu Database name, tên người dùng user name, mật khẩu password, và các thông số khác được yêu cầu để kết nối với cơ sở dữ liệu. Bảng sau đây hiển thị những thuộc tính và phương thức hay sử dụng nhất của một đối tượng kết nối
Bảng 2.2: Thuộc tính và phương thức của đối tượng SqlConnection
Tên Mô tả
ConnectionString Cung cấp thông tin như datasource, tên cơ sở dữ liệu, được sử dụng để thiết lập kết nối với một cơ sở dữ liệu
Open() Mở một kết nói với datasource được khai báo tại ConnectionString
Close() Được sử dụng để đóng kết nối với data source
State Được sử dụng để kiểm tra trạng thái của một kết nối. 0: kết nối đang đóng, 1: kết nối đang mở.
Để kết nối với SQL Server, chuỗi kết nối có cấu trúc như sau:
Server=myServerAddress;Database=myDataBase;UserId=myUsername; Password=myPassword;
SqlCommand Object
Quá trình tương tác với cơ sở dữ liệu nghĩa là phải có các hành động cho nó, tương ứng với thực hiện một đối tượng lệnh. Đối tượng này thực thi các câu truy vấn SQL , Store Procedure, hoặc chỉ định tham chiếu đến một đối tượng SqlDataAdapter.
SqlDataReader Object: Nhiều thao tác dữ liệu đòi hỏi chỉ lấy một luồng dữ liệu để đọc. Đối tượng Data Reader cho phép lấy được kết quả của một câu lệnh SELECT từ một đối tượng command. Để tăng hiệu suất, dữ liệu trả về từ một data reader là một luồng
Sinh viên thực hiện: Trần Tuấn Mỹ 40
dữ liệu fast forward-only. Có nghĩa là chỉ có thể lấy dữ liệu từ luồng theo một thứ tự nhất định. Mặc dù điều này có lợi về mặt tốc độ, nhưng nếu cần phải thao tác dữ liệu, thì một DataSet sẽ là một đối tượng tốt hơn để làm việc.
Các thuộc tính và phương thức của đối tượng DataReader:
Bảng 2.3: Thuộc tính và phương thức của đối tượng DataReader
Tên Mô tả
Read() Phương thức được sử dụng để đọc một dòng.
Close() Được sử dụng để đóng đối tượng DataReader.
NextResult Được sử dụng để di chuyển đến hàng dữ liệu tiếp theo trong trường hợp câu lệnh truy vấn trả lại nhiều dòng kết quả
DataSet Object
Đối tượng DataSet là một thể hiện của dữ liệu trong bộ nhớ. Chúng chứa nhiều đối tượng DataTable, bên trong DataTable lại có nhiều column và row, giống như các database table thông thường. Thậm chí có thể định nghĩa dữ liệu giữa các table để tạo các quan hệ parent-child. DataSet được thiết kế đặc biệt để giúp quản lý dữ liệu trong bộ nhớ và để hỗ trợ các thao tác không cần kết nối trên dữ liệu. DataSet là một đối tượng được dùng bởi tất cả Data Provider, đó là lý do tại sao nó không có một Data Provider prefix trong tên gọi.
SqlDataAdapter: Đôi lúc dữ liệu làm việc là read-only và chúng ta ít khi cần thay đổi dữ liệu nguồn. Vài trường hợp cần lưu trữ tạm dữ liệu trong bộ nhớ để hạn chế truy xuất đến cơ sở dữ liệu. DataAdapter giúp quản lý dữ liệu trong chế độ ngắt kết nối disconnect. DataAdapter sẽ đẩy vào DataSet khi đọc dữ liệu và thực hiện thay đổi tất cả dữ liệu vào Database.
DataAdapter chứa một tham chiếu đến đối tượng connection và mở/đóng kết nối tự động khi đọc và ghi dữ liệu vào database. Hơn nữa, DataAdapter chứa đối tượng command cho những thao tác SELECT, INSERT, UPDATE và DELETE. STORE PROCEDURE trên dữ liệu. Chúng ta sẽ có một DataAdapter được định nghĩa cho mỗi
Sinh viên thực hiện: Trần Tuấn Mỹ 41
table trong một DataSet và nó sẽ quản lý các giao tiếp với database. Tất cả những gì chúng ta cần làm là chỉ cho DataAdapter khi nào nạp hoặc ghi vào cơ sở dữ liệu.