Khái niệm DataSet DataSet là gì • DataSet là một đối tượng cho phép – Nạp 1 phần dữ liệu của data source lên bộ nhớ– Lưu trữ dữ liệu theo mô hình quan hệ • DataSet thuộc kiến trúc Disco
Trang 1Chương 3
Trang 3Khái niệm DataSet
DataSet là gì
• DataSet là một đối tượng cho phép
– Nạp 1 phần dữ liệu của data source lên bộ nhớ– Lưu trữ dữ liệu theo mô hình quan hệ
• DataSet thuộc kiến trúc Disconnected
• DataSet không phụ thuộc vào loại data source
Trang 4Khái niệm DataSet
Cấu trúc cơ bản của lớp DataSet
• Gồm 1 tập các bảng – DataTable
• Gồm 1 tập các quan hệ – DataRelation
DataSet
DataTable DataTable
DataRelation
Trang 5Lớp DataSet
Sơ đồ lớp
3 thuộc tính quan trọng trong DataSet
Tạo đối tượng DataSet
Một số thuộc tính/phương thức trong DataSet
Trang 6Lớp DataSet
Sơ đồ lớp
Trang 7Lớp DataSet
3 thuộc tính quan trọng trong DataSet
Lớp DataSet có 3 collection properties quan trọng
• Tables
• Relations
• ExtendedProperties
Trang 8Lớp DataSet
3 thuộc tính quan trọng trong DataSet
Tables property
• Là đối tượng của lớp DataTableCollection , có thể chứa
0 hay nhiều đối tượng DataTable
• Đối tượng DataTable dùng để lưu trữ 1 tập dữ liệu
dạng bảng được trích ra từ Data Source
Relations property
• Là đối tượng của lớp DataRelationCollection, có thể
chứa 0 hay nhiều đối tượng DataRelation
• Đối tượng DataRelation định nghĩa mối quan hệ
cha-con giữa 2 bảng dựa vào khóa ngoại
Trang 9Lớp DataSet
3 thuộc tính quan trọng trong DataSet
ExtendedProperties property
• Là đối tượng của lớp PropertyCollection, có
thể chứa 0 hay nhiều đối tượng thuộc tính do người dùng tự định nghĩa
• Thường được dùng để lưu các dữ liệu kèm
theo DataSet (vd thời gian DataSet được tạo,
…)
Trang 10Lớp DataSet
Tạo đối tượng DataSet
Cách 1: Dùng constructor
DataSet ds = new DataSet ();
DataSet ds = new DataSet ("TenDataSet");
Cách 2: Dựa trên 1 đối tượng DataSet có sẵn
• Chú ý: Nếu không chỉ rõ tên của đối tượng
DataSet thì tên này sẽ là “NewDataSet”
Trang 12Lớp DataTable
Khái niệm DataTable
3 thuộc tính quan trọng trong DataTable
Tạo đối tượng DataTable
Thêm đối tượng DataTable vào đối tượng DataSet
Một số thuộc tính/phương thức trong DataTable
Trang 13Lớp DataTable
Khái niệm DataTable
DataTable dùng để lưu trữ 1 tập dữ liệu dạng bảng được trích ra từ Data Source
Đặc điểm của DataTable
• Là trung tâm của kiến trúc ADO.NET
• Có thể dùng độc lập với DataSet
Trang 14Lớp DataTable
3 thuộc tính quan trọng trong DataTable
Lớp DataTable có 3 collection properties
Trang 15Lớp DataTable
3 thuộc tính quan trọng trong DataTable
Columns property
• Là đối tượng của lớp DataColumnCollection , có thể
chứa 0 hay nhiều đối tượng DataColumn
• Đối tượng DataColumn dùng để định nghĩa các thuộc
tính của mỗi cột của bảng (tên cột, kiểu dữ liệu lưu trữ, khóa chính, seed, step)
Rows property
• Là đối tượng của lớp DataRowCollection , có thể chứa
0 hay nhiều đối tượng DataRow
• Đối tượng DataRow chứa dữ liệu thực sự trong
DataTable
Trang 16Lớp DataTable
3 thuộc tính quan trọng trong DataTable
Constraints property
• Là đối tượng của lớp ConstraintCollection, có
thể chứa 0 hay nhiều đối tượng
ForeignKeyConstraint và/hay
UniqueConstraint
Trang 17Lớp DataTable
Tạo đối tượng DataTable
Cách 1: Dùng Constructor
DataTable table = new DataTable ();
DataTable table = new DataTable ("TenBang");
Cách 2: Vừa tạo bảng vừa thêm vào DataSet
DataTable table = tenDS.Tables.Add();
DataTable table = tenDS.Tables.Add("TenBang");
Cách 3: Dựa trên 1 đối tượng DataTable có sẵn
Trang 18Lớp DataTable
Thêm đối tượng DataTable vào DataSet
Trang 20Lớp DataColumn
Khái niệm DataColumn
Tạo đối tượng DataColumn
Thêm đối tượng DataColumn vào DataTable
Một số thuộc tính/phương thức trong
DataColumn
Trang 21Lớp DataColumn
Khái niệm DataColumn
DataColumn dùng để định nghĩa các thuộc
tính của mỗi cột của bảng (tên cột, kiểu dữ
liệu lưu trữ, khóa chính, seed, step)
DataColumn tạo nên cấu trúc của bảng (lược
đồ của bảng – schema)
Trang 22Lớp DataColumn
Tạo đối tượng DataColumn
Cách 1: Constructor
DataColumn col = new DataColumn ();
DataColumn col = new DataColumn (“tenCot”);
DataColumn col = new DataColumn (“tenCot”, typeof (kieu));
DataColumn col = new DataColumn (“tenCot”, typeof (kieu), expr);
Cách 2: Vừa tạo cột vừa thêm vào bảng
DataColumn col = tenBang.Columns.Add();
DataColumn col = tenBang.Columns.Add(“tenCot”);
DataColumn col = tenBang.Columns.Add(“tenCot”, typeof (kieu));
DataColumn col = tenBang.Columns.Add(“tenCot”, typeof (kieu), expr);
Trang 23Lớp DataColumn
Thêm đối tượng DataColumn vào DataTable
Trang 25Lớp DataRow
Khi DataTable đã được xây dựng và các
DataColumn đã được định nghĩa chúng ta có thể thêm dữ liệu vào bảng
Thêm dữ liệu vào bảng:
• Thêm đối tượng DataRow vào
DataTable.Rows collection
Trang 26• B3: tenBang.Rows.Add(row);
Trang 27 Khái niệm và phân loại
ForeignKeyConstraint
UniqueConstraint
Trang 28Constraints
Khái niệm và phân loại
Khái niệm Constraints
• Là những quy tắc (rules) áp dụng cho một cột
hay các cột để xác định hành động khi dữ liệu của cột đó bị thay đổi
Phân loại constraints
• ForeignKeyConstraint
• UniqueConstraint.
Trang 29ForeignKeyConstraint
ForeignKeyConstraint dùng để
• Ràng buộc tham chiếu
• Định nghĩa hành vi cascade (khi giá trị trong
cột của bảng cha bị thay đổi hay xóa thì ForeignKeyConstraint sẽ định nghĩa bảng con phản ứng như thế nào)
ForeignKeyConstraint fk = new
ForeignKeyConstraint (“tenFK”, parentCol, childCol);
Trang 30fk.DeleteRule = Rule Cascade; // default
fk.DeleteRule = Rule SetNull;
fk.DeleteRule = Rule SetDefault;
fk.DeleteRule = Rule None;
Trang 31UniqueConstraint
UniqueConstraint dùng để
• Định nghĩa giá trị không được trùng trên 1 cột hay
nhiều cột (giá trị duy nhất)
ConstraintException
• Nếu nhập giá trị vi phạm ràng buộc thì chương
trình sẽ ném ra ngoại lệ ConstraintException
UniqueConstraint uc = new UniqueConstraint ( DataColumn col);
UniqueConstraint uc = new UniqueConstraint ( DataColumn []
col);
Trang 32Primary key
Khóa chính trong DataTable
• Khóa chính trong DataTable là một mảng các
DataColumn được dùng để xác định 1 DataRow duy nhất trong DataTable
tenTable.PrimaryKey = new DataColumn []{col1, col2, …};
Trang 33Lớp DataRelation
Khái niệm và chức năng của DataRelation
Tạo đối tượng DataRelation
Thêm đối tượng DataRelation vào DataSet
Truy cập các dòng dữ liệu có liên quan
Trang 34Lớp DataRelation
Khái niệm và chức năng của DataRelation
Khái niệm DataRelation
• DataRelation dùng để thiết lập mối quan hệ
giữa bảng cha (parent – master) và bảng con (child – detail) dựa trên khóa chung
2 chức năng của DataRelation
• Tìm kiếm những dòng dữ liệu liên quan đến
dòng dữ liệu đang xử lý
• Thực hiện ràng buộc tham chiếu
Trang 35Lớp DataRelation
Tạo đối tượng DataRelation
Tạo đối tượng DataRelation
DataRelation r = new DataRelation (“ten”,
DataColumn parentCol, DataColumn childCol);
DataRelation r = new DataRelation (“ten”,
DataColumn [] parentCol, DataColumn [] childCol);
Trang 36Lớp DataRelation
Truy cập các dòng dữ liệu có liên quan
Thêm đối tượng DataRelation vào DataSet
Trang 38DataSet kiểu mạnh
Giới thiệu DataSet kiểu mạnh
Tạo DataSet kiểu mạnh
Sử dụng
Trang 40DataSet kiểu mạnh
Tạo DataSet kiểu mạnh
B1: Tạo DataSet
Click phải chuột lên tên Project Add
New Item: Chọn DataSet
Trang 45DataSet kiểu mạnh
Tạo DataSet kiểu mạnh
Trang 48DataSet kiểu mạnh
Sử dụng
Truy cập các đối tượng dòng thông qua property
• ds.Xe[int index] hay ds.Xe.Rows[int index]
• ds.NhanVien[int index] hay ds.NhanVien.Rows[int index]
• ds.PhanCong[index] hay ds.PhanCong.Rows[int index]
Thêm/Xoa đối tượng dòng: Phương thức Add/Remove
• ds.Xe.AddXeRow(XeRow row)
• ds.Xe.AddNhanVienRow(NhanVienRow row)
• ds.Xe.AddPhanCongRow(PhanCongRow row)
Trang 49 Lấy những dòng có liên quan
• DataRow[] rows = ds.NhanVien[i].GetChildRows();
Trang 50Một số đoạn mã
Duyệt qua các bảng trong DataSet
Duyệt qua các dòng trong DataTable
Duyệt qua các cột trong DataTable
Trang 51Một số đoạn mã
Duyệt qua các bảng trong DataSet
Trang 52Một số đoạn mã
Duyệt qua các dòng trong DataTable
Trang 53Một số đoạn mã
Duyệt qua các cột trong DataTable
Trang 54Tóm tắt chương 3