Khái niệm ADO.NET là một tập các lớp thư viện được sử dụng để truy xuất dữ liệu Nằm trong bộ thư viện các lớp cơ sở của .Net Framework Thêm/xóa/sửa dữ liệu Đọc dữ liệu ADO.NET là th
Trang 1C#.NETADO.NET
Trang 3 OLEDB (Object Linking and Embeding Database):
cải tiến hơn ODBC, liên kết tốt hơn với thư viện
nguyên gốc (native) của hệ CSDL Đóng gói cả
ODBC
ADO (ActiveX Data Object): cải tiến thêm, dễ dàng
cho người phát triển ứng dụng
ADO.NET: là thay thế ADO (khác hoàn toàn ADO)
tương thích nền NET
Mô hình tổng quát
Trang 4Khái niệm
ADO.NET là một tập các lớp thư viện được sử
dụng để truy xuất dữ liệu
Nằm trong bộ thư viện các lớp cơ sở của Net
Framework
Thêm/xóa/sửa dữ liệu Đọc dữ liệu
ADO.NET là thành phần nội tại của Net
Framework có thể sử dụng trong các ngôn
ngữ hỗ trợ Net (C#, VB.Net, )
Các lớp ADO.Net đặt trong System.Data
ASP.NET Windows Forms
Drawing XML Data
Comman language Runtime
System Services
ADO.NET Class Framework
Trang 5Lợi ích
ADOkết nối CSDL tốt, nhưng
Đòi hỏi kết nối chuẩn COM và Windows
Xử lý kết nối CSDL qua Internet khó khăn và không
tốt
ADO.Net
Tích hợp chặt chẽ với XML
Làm việc tốt trên môi trường Internet
ADO.Net là sự cải tiến của ADO
Khác biệt nhau ở mô hình (COM vs XML)
Giống nhau về các chức năng
Kiến trúc
Trang 6Cây phân cấp các đối tượng trong ADO.NET
Các thành phần cơ bản
Connection: Là đối tượng có nhiệm vụ thực hiện
nhiệm vụ kết nối đến CSDL
Command: Dùng để thực hiện các câu lệnh SQL
thao tác với CSDL như: Insert, Update, Select,
Delete
DataReader: Dùng để đón nhận kết quả trả về từ
đối tượng Command
DataAdapter: Có chức năng như một cầu nối
giữa nguồn (tệp) dữ liệu và các bảng được
cached trong bộ nhớ
Trang 7.NET Data Provider
XXXConnection
XXXDataAdapter
XXXCommand XXXDataReader NET Data Provider
DataSet
XXXParameter XXXTransaction
Data Source (CSDL)
Các Data Provider cơ bản
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 lắm
Dùng thư viện System.Data.SqlClientsẽ truy xuất
SQL Server nhanh hơn System.Data.OleDb
Dùng thư viện System.Data.OracleClientsẽ truy
xuất Oracle nhanh hơn System.Data.OleDb
Trang 8Thành phần giữ dữ liệu
DataTable là một đối tượng có thể chứa một
bảng trong database trên bộ nhớ.
DataSet là một đối tượng có thể chứa nhiều
DataTable cùng với mối liên hệ giữa chúng
(relationship) và kể các ràng buộc (constraint)
được lưu hoàn toàn trong bộ nhớ để làm việc
offline.Như vậy DataSet được dùng để nắm giữ
dữ liệu của mọi database và cho phép thay đổi
dữ liệu bên trong nó, sau đó cập nhật lại cho
database.
Mối quan hệ
Trang 9 Các property quan trọng
DataSet
Tables: chứa các DataTable.
Relations: chứa các DataRelation.
DataTable
Columns: chứa các DataColumn.
Rows: chứa các DataRow.
Constraints: chứa các Constraint.
DataView
DataView: dùng để trình bày dữ liệu có trong đối
tượng DataTable dưới hình thức sắp xếp, lọc, tìm
kiếm, hiệu chỉnh và điều hướng
AllowDelete, AllowEdit, AllowNew: các thuộc tính
để cho phép tương tác với dữ liệu hiển thị của
DataView
Count: trả về số lượng mẩu tin đang truy vấn
RowFilter: thuộc tính này cho phép lọc dữ liệu
trong DataView tương tự mệnh đề WHERE trong
câu lệnh SQL
Sort: thuộc tính cho phép sắp xếp các mẩu tin theo
điều kiện
Trang 10Thành phần con
DataColumn: là phần tử cơ bản tạo nên
DataTable
ColumnName: tên của column
DataType: kiểu dữ liệu trong column
AllowDBNull: cho phép dữ liệu null hay không
DefaultValue: dữ liệu mặc định
Unique: ràng buộc dữ liệu duy nhất
DataRow: là đối tượng nắm giữ dữ liệu cho
Trang 11Mô hình kết nối
Connected Model
Chương trình
ConnectionCommand
Trang 12 Connection : xác định CSDL sẽ thực hiện thao tác
CommandText : xác định thao tác cần thực hiện
Parameters : xác định các tham số lệnh
Phương thức quan trọng
ExecuteReader : phù hợp lệnh Select trả ra 1 bảng dữ liệu
ExecuteScalar : phù hợp lệnh Select trả ra 1 giá trị
ExecuteNonQuery : phù hợp lệnh Insert, Delete, Update
BookNam e
Trang 13DataAdapter
Data Source
DataSet
Fill : dùng SelectCommand lấy dữ liệu từ Data
Source đổ vào DataSet.
Update : dùng InsertCommand, UpdateCommand
và DeleteCommand cập nhật dữ liệu trong DataSet
Trang 14 Mỗi chương trình khi chạy đa phần cần có những
tham số ràng buộc tùy theo ngữ cảnh, liên hệ bên
ngoài Ví dụ: cách thức hiển thị, cách kết nối
database,…
Làm sao để thay đổi các tham số kể trên mà không
phải biên dịch lại chương trình
Giải pháp ở đây là sử dụng Configuration của NET
Trang 15Ứng dụng kết nối Database (tt)
Cấu hình chương trình
System.Configurationlà namespace cung cấp các
mô hình lập trình để xử lý các dữ liệu về cấu hình
(config)
Với chương trình Application.NET thì dữ liệu cấu
hình sẽ lưu trong file App.config
Với chương trình ASP.NET thì dữ liệu cấu hình lưu
trong fiel Web.config
Cách dùng Application config: Yêu cầu bắt buộc
đầu tiên phải add reference thư viện
System.Configuration
Ứng dụng kết nối Database (tt)
Sau đó add file config vào project
Thêm nội dung vào file config
Trang 16Ứng dụng kết nối Database (tt)
ConfigurationManager
Thuộc namespace System.Configuration
Hỗ trợ xử lý dữ liệu trong file cấu hình
Cần quan tâm 2 thuộc tính quan trọng là:
Là đối tượng dùng để trình bày dữ liệu có trong
DataSet, DataTable, DataView dưới hình thức khác
nhau
Có thể tùy biến các column để thêm các control
như: Button, TextBox, ComboBox, CheckBox,
Image, Link
Trang 17Ứng dụng kết nối Database (tt)
Các property:
DataSource: để gắn kết nguồn dữ liệu mà
DataGridView sẽ trình bày.
CurrentRow: để lấy ra mẩu tin đang được chọn.
CurrentCell: để lấy ra ô được chọn.
DefaultCellStyle: để định dạng hiển thị cho ô.
Columns: chứa các DataGridViewColumn (có các lớp
dẫn xuất tương ứng)
DataGridViewTextBoxColumn: column dạng TextBox.
DataGridViewCheckBoxColumn: column dạng CheckBox.
DataGridViewComboBoxColumn: column dạng ComboBox.
Trang 18Mẫu thiết kế Factory trong ADO.NET
ADO.NET xây dựng một nền tảng độc lập với Hệ
quản trị cơ sở dữ liệu nên các phương pháp kết
nối và truy vấn database là tương đồng với mọi
dạng database (Oracle, SQL, Access, MySQL,…)
Ví dụ:
Đối tượng Connection đảm nhận việc mở và đóng
kết nối với các phương thức: Open, Close,…
Đối tượng Command đảm nhận việc thực thi lệnh
với các phương thức: ExecuteReader,
ExecuteNonQuery, ExecuteScalar,…
Mẫu thiết kế Factory trong ADO.NET (tt)
Tuy nhiên với mỗi Hệ quản trị CSDL khác nhau
thì có cách thức kết nối và truy vấn riêng biệt
(driver) nên các lớp đối tượng kể trên là khác
nhau
Ví dụ:
Với SQL: SqlConnection, SqlCommand,…
Với Access: OleDbConnection,
OleDbCommand,…
Vậy làm cách nào để có thể cài đặt thật sự độc
lập với Hệ quản trọ CSDL ???
Trang 19Mẫu thiết kế Factory trong ADO.NET (tt)
Abstract Factory Design Pattern
Mẫu thiết kế Factory trong ADO.NET (tt)
Ví dụ
Trang 20Mẫu thiết kế Factory trong ADO.NET (tt)
Microsoft.NET đã hiện thực mẫu thiết kế Factory
trong ADO.NET để giải quyết vấn đề “độc lập” với
các Hệ quản trị CSDL
Các thành phần quan trọng
Các lớp đối tượng Dbxxx trong namespace
System.Data.Common
Lớp đối tượng abstract DbProviderFactory thường
được tạo cụ thể từ phương thức tĩnh GetFactory
của DbProviderFactories.
Mẫu thiết kế Factory trong ADO.NET (tt)
Trang 21Bài tập
Xây dựng ứng dụng cho phép kết nối với
database QLHS với yêu cầu sử dụng cả SQL
server và MySQL (có thể thay đổi bởi người
dùng)