Nhắc lại mô hình dữ liệu kết nối và ngắt kết nối Tạo các đối tượng DataSet và DataTable Tạo các DataColumn của DataTable Khai báo các ràng buộc constraint và các quan hệ relation
Trang 1CÔNG NGHỆ ADO.NET VỚI C#
Trang 28:23:39 PM
Bài 4: Các xử lý trong mô hình ngắt
kết nối (Disconnectd Model)
1 Mô hình dữ liệu ngắt kết nối ADO.NET là
gì?
2 Tiến trình đọc (Loading) và ghi (Saving)
dữ liệu của DataSet
3 DataView là gì?
Trang 31 Mô hình ngắt kết nối là gì?
Nhắc lại mô hình dữ liệu kết nối và ngắt
kết nối
Tạo các đối tượng DataSet và DataTable
Tạo các DataColumn của DataTable
Khai báo các ràng buộc (constraint) và các quan hệ (relation) của các DataTable
Cập nhật dữ liệu cho DataTable
Trang 4Mô hình dữ liệu kết nối và ngắt kết nối
Mô hình dữ liệu kết nối (connected model)
– Cho phép mở và duy trì kết nối đến CSDL để
thực hiện lệnh – Sử dụng đối tượng Connection và Command
Mô hình dữ liệu ngắt kết nối (disconnected
model)
– Cho phép kết nối đến CSDL, đọc và lưu trữ
dữ liệu vào vùng nhớ, sau đó ngắt kết nối
– Sử dụng đối tượng Connection, DataAdapter
và DataSet
Trang 5Giới thiệu mô hình ngắt kết nối
Trang 6DataSet
DataSet là gì?
– Là một CSDL thu nhỏ đặt trong vùng nhớ
– DataSet chứa các DataTable, DataRelation
– Thuộc tính Tables chứa các DataTable của
DataSet – Thuộc tính Relations chứa các DataRelation
của DataSet
Trang 7DataSet
Tạo DataSet
//Tạo DataSet (có tên mặc định là NewDataSet)
DataSet du_lieu = new DataSet();
// Hoặc tạo DataSet có tên QLSV
DataSet du_lieu = new DataSet(“QLSV”);
Trang 8DataTable
Tạo DataTable
– Khởi tạo các DataTable
– Nếu thêm vào DataSet: sử dụng phương thức
Add
//Tạo DataTable không có tên
DataTable bang_sv = new DataTable();
// Hoặc tạo DataTable có tên SV
DataTable bang_sv = new DataTable(”SV”);
// Thêm DataTable vào DataSet
du_lieu.Tables.Add(bang_sv);
Trang 9Tạo các DataColumn của DataTable
Đối tượng DataColumn
Trang 10Tạo các DataColumn của DataTable
Khai báo và khởi tạo
Trang 11Tạo các DataColumn của DataTable
Các thuộc tính khác của DataColumn
– Chỉ đọc: thuộc tính ReadOnly
– Không được Null: thuộc tính AllowDBNull
– Duy nhất: thuộc tính Unique
Trang 12Minh họa tạo cấu trúc DataTable
Tạo DataTable tên Hang_Hoa gồm các
Trang 13Thực hành - bài 1
Tạo DataSet và các DataTable bằng
chương trình
– Yêu cầu 1
Trang 14Khai báo Constraint và Relation
Constraint là các kiểm tra ràng buộc trên
Relation là quan hệ giữa hai DataTable
– Tạo DataRelation gồm Tên quan hệ, các cột bảng
cha, các cột của bảng con
– Thuộc tính Relations chứa các DataRelation của
DataSet
Trang 15Minh họa tạo Constraint
Tạo các DataTable KHOA và SINH_VIEN
KHOA gồm các cột Mã khoa, Tên khoa
SINH_VIEN gồm các cột Mã sv, Họ Tên
sv, Mã khoa
Tạo constraint kiểm tra tên khoa là duy
nhất
Tạo constraint kiểm tra khóa ngoại mã
khoa trong SINH_VIEN (bảng con) phải có
Trang 16Minh họa tạo DataRelation
Tạo các DataTable KHOA và SINH_VIEN
KHOA gồm các cột Mã khoa, Tên khoa
SINH_VIEN gồm các cột Mã sv, Họ Tên
sv, Mã khoa
Tạo DataRelation dựa trên cột Mã khoa
trong SINH_VIEN (bảng con) và trong
KHOA (bảng cha)
Trang 17Thực hành - bài 1
Tạo DataSet và các DataTable bằng
chương trình
– Yêu cầu 2
Trang 18Cập nhật dữ liệu cho DataTable
DataRow
– Là một dòng trong DataTable
– Thuộc tính Rows chứa các DataRow của DataTable
Cập nhật Thêm DataRow vào DataTable
– Tạo một DataRow, sử dụng p.thức NewRow() của
DataTable
– Sử dụng phương thức Add để thêm DataRow vào
DataTable
Trang 19Cập nhật dữ liệu cho DataTable
Khai báo và khởi tạo DataRow
Trang 20Cập nhật dữ liệu cho DataTable
Cập nhật xóa
– Sử dụng phương thức Remove để xóa hẳn
một DataRow ra khỏi DataTable – Sử dụng phương thức Delete để đánh dấu
xóa một DataRow trong DataTable
Trang 21Cập nhật dữ liệu cho DataTable
Ghi và không ghi các thay đổi trong
DataTable
– Sử dụng phương thức AcceptChanges để ghi
– Sử dụng phương thức RejectChanges để
không ghi
Trang 23Minh họa cập nhật DataTable
Tạo một DataTable và thêm các dòng
Hiển thị DataTable ra lưới
Cho phép Thêm, Sửa, Xóa các dòng
Xử lý các nút Ghi và Không ghi
Minh họa phương thức Find để tìm kiếm
Minh họa phương thức Select để chọn lọc
Trang 242 Tiến trình đọc và ghi dữ liệu của DataSet
Khai báo và khởi tạo đối tượng
DataAdapter
Sử dụng đối tượng DataAdapter để đọc và ghi dữ liệu
Trang 252 Tiến trình đọc và ghi dữ liệu của DataSet
Trang 26Khai báo và khởi tạo đối tượng DataAdapter
Các DataAdapter trong NET
– System.Data.SqlClient.SqlDataAdapter
– System.Data.OleDbClient.OleDbDataAdapter
– System.Data.Odbc.OdbcDataAdapter
– System.Data.OracleClient.OracleDataAdapter
Trang 27Khai báo và khởi tạo đối tượng DataAdapter
Khai báo và khởi tạo
– DataAdapter dùng để đọc dữ liệu từ CSDL và lưu trữ
trong các DataTable của DataSet
– Trước khi đọc thì Connection tự động mở ra và sau
khi đọc xong thi Connection tự động đóng lại
– DataAdapter sử dụng các Command sau
• Select Command
• Insert Command
• Update Command
• Delete Command
Trang 28Khai báo và khởi tạo đối tượng DataAdapter
Khai báo và khởi tạo
// Tạo DataAdapter
string lenh = “Select * From …”;
SqlDataAdapter bo_doc_ghi = new SqlDataAdapter(lenh,
ket_noi);
Trang 30Sử dụng DataAdapter để đọc dữ liệu
Đọc cấu trúc
– Sử dụng phương thức FillSchema
< DataAdapter>.FillSchema(<DataSet>,<kiểu cấu trúc>);
Trang 31Minh họa sử dụng DataAdapter để đọc
dữ liệu
Tạo một DataAdapter để đọc dữ liệu của
một bảng
Dữ liệu đọc được sẽ lưu trữ trong
DataTable của DataSet (hoặc DataTable
không thuộc DataSet)
Hiển thị dữ liệu ra màn hình
Trang 32Minh họa sử dụng DataAdapter để đọc
dữ liệu
Tạo các DataAdapter để đọc dữ liệu của
các bảng cha và bảng con
Dữ liệu đọc được sẽ lưu trữ trong
DataTable của DataSet
Hiển thị dữ liệu ra màn hình
Trang 33Thực hành - bài 2
Sử dụng DataAdapter để đọc dữ liệu
Trang 34Sử dụng DataAdapter để ghi dữ liệu
Sử dụng phương thức Update
Trước khi Update thì các Insert
Command, Update Command, Delete
Command của DataAdapter phải khai báo
các câu lệnh thích hợp
Có thể sử dụng đối tượng
SqlCommandBuilder để xây dựng tự động
các Command này
Trang 36Minh họa sử dụng DataAdapter để đọc
và ghi dữ liệu
Tạo một DataAdapter để đọc dữ liệu của
một bảng
Dữ liệu đọc được sẽ lưu trữ trong
DataTable của DataSet (hoặc DataTable
không thuộc DataSet)
Hiển thị dữ liệu ra màn hình và cho phép
cập nhật
Xử lý nút Ghi về CSDL và nút Không ghi
Trang 37Minh họa sử dụng DataAdapter để đọc
Trang 38Thực hành - bài 4
Sử dụng DataAdapter để đọc và ghi dữ
liệu
Trang 393 DataView là gì?
Nếu DataTable được dùng lưu trữ dữ liệu
thì DataView được dùng hiển thị dữ liệu
DataView cho phép lọc và sắp xếp dữ liệu
của DataTable
Một DataTable có thể có nhiều DataView
Một DataTable luôn có một Default View
Trang 403 DataView là gì?
Trang 41Sử dụng DataView
Khai báo và khởi tạo
// Khai báo và khởi tạo DataView
DataView dv = new DataView(<DataTable>);
// Tham chiếu đến DataView mặc định
DataView dv = <DataTable> DefaultView;
Trang 42Sử dụng DataView
Để sắp xếp dữ liệu thuộc tính Sort
Để lọc dữ liệu theo điều kiện thuộc tính
Trang 43Minh họa sử dụng DataView
Tạo một DataView và hiển thị ra màn hình
Xử lý sắp xếp
Xử lý lọc
Xử lý tìm kiếm
Trang 44Thực hành – bài 5
Tạo DataView và hiển thị các DataView
khác nhau ra màn hình