03 chuong 3 - data sets
description
Transcript of 03 chuong 3 - data sets
![Page 1: 03 chuong 3 - data sets](https://reader035.fdocuments.us/reader035/viewer/2022062419/558e74da1a28abe2478b45c3/html5/thumbnails/1.jpg)
DataSets
Chương 3
![Page 2: 03 chuong 3 - data sets](https://reader035.fdocuments.us/reader035/viewer/2022062419/558e74da1a28abe2478b45c3/html5/thumbnails/2.jpg)
2
Nội dung
Khái niệm DataSet Lớp DataSet Lớp DataTable Lớp DataColumn Lớp DataRow Constraints Primary key Lớp DataRelation DataSet kiểu mạnh
![Page 3: 03 chuong 3 - data sets](https://reader035.fdocuments.us/reader035/viewer/2022062419/558e74da1a28abe2478b45c3/html5/thumbnails/3.jpg)
3
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 Disconnected
• DataSet không phụ thuộc vào loại data source
![Page 4: 03 chuong 3 - data sets](https://reader035.fdocuments.us/reader035/viewer/2022062419/558e74da1a28abe2478b45c3/html5/thumbnails/4.jpg)
4
Khá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
![Page 5: 03 chuong 3 - data sets](https://reader035.fdocuments.us/reader035/viewer/2022062419/558e74da1a28abe2478b45c3/html5/thumbnails/5.jpg)
5
Lớ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
![Page 6: 03 chuong 3 - data sets](https://reader035.fdocuments.us/reader035/viewer/2022062419/558e74da1a28abe2478b45c3/html5/thumbnails/6.jpg)
6
Lớp DataSetSơ đồ lớp
![Page 7: 03 chuong 3 - data sets](https://reader035.fdocuments.us/reader035/viewer/2022062419/558e74da1a28abe2478b45c3/html5/thumbnails/7.jpg)
7
Lớp DataSet3 thuộc tính quan trọng trong DataSet
Lớp DataSet có 3 collection properties quan trọng• Tables
• Relations
• ExtendedProperties
![Page 8: 03 chuong 3 - data sets](https://reader035.fdocuments.us/reader035/viewer/2022062419/558e74da1a28abe2478b45c3/html5/thumbnails/8.jpg)
8
Lớp DataSet3 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
![Page 9: 03 chuong 3 - data sets](https://reader035.fdocuments.us/reader035/viewer/2022062419/558e74da1a28abe2478b45c3/html5/thumbnails/9.jpg)
9
Lớp DataSet3 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, …)
![Page 10: 03 chuong 3 - data sets](https://reader035.fdocuments.us/reader035/viewer/2022062419/558e74da1a28abe2478b45c3/html5/thumbnails/10.jpg)
10
Lớp DataSetTạ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”
DataSet ds1;…DataSet ds2 = ds1.Clone();DataSet ds3 = ds1.Copy();DataSet ds4 = ds1.GetChanges();DataSet ds5 = ds1.GetChanges(DataRowState.Added);
![Page 11: 03 chuong 3 - data sets](https://reader035.fdocuments.us/reader035/viewer/2022062419/558e74da1a28abe2478b45c3/html5/thumbnails/11.jpg)
11
Lớp DataSet Một số thuộc tính/phương thức trong DataSet
Properties • DataSetName
Method • void Clear()
• void AcceptChanges()
• bool HasChanges()
• bool HasChanges(DataRowState rowStates)
• void RejectChanges()
![Page 12: 03 chuong 3 - data sets](https://reader035.fdocuments.us/reader035/viewer/2022062419/558e74da1a28abe2478b45c3/html5/thumbnails/12.jpg)
12
Lớ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
![Page 13: 03 chuong 3 - data sets](https://reader035.fdocuments.us/reader035/viewer/2022062419/558e74da1a28abe2478b45c3/html5/thumbnails/13.jpg)
13
Lớp DataTableKhá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
![Page 14: 03 chuong 3 - data sets](https://reader035.fdocuments.us/reader035/viewer/2022062419/558e74da1a28abe2478b45c3/html5/thumbnails/14.jpg)
14
Lớp DataTable3 thuộc tính quan trọng trong DataTable
Lớp DataTable có 3 collection properties quan trọng• Columns
• Constraints
• Rows
Cấu trúc của Table
![Page 15: 03 chuong 3 - data sets](https://reader035.fdocuments.us/reader035/viewer/2022062419/558e74da1a28abe2478b45c3/html5/thumbnails/15.jpg)
15
Lớp DataTable3 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
![Page 16: 03 chuong 3 - data sets](https://reader035.fdocuments.us/reader035/viewer/2022062419/558e74da1a28abe2478b45c3/html5/thumbnails/16.jpg)
16
Lớp DataTable3 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
![Page 17: 03 chuong 3 - data sets](https://reader035.fdocuments.us/reader035/viewer/2022062419/558e74da1a28abe2478b45c3/html5/thumbnails/17.jpg)
17
Lớp DataTableTạ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 DataSetDataTable table = tenDS.Tables.Add();
DataTable table = tenDS.Tables.Add("TenBang");
Cách 3: Dựa trên 1 đối tượng DataTable có sẵnDataTable table = tenTable.Clone();
DataTable table = tenTable.Copy();
![Page 18: 03 chuong 3 - data sets](https://reader035.fdocuments.us/reader035/viewer/2022062419/558e74da1a28abe2478b45c3/html5/thumbnails/18.jpg)
18
Lớp DataTableThêm đối tượng DataTable vào DataSet
tenDS.Tables.Add(tenBang);
![Page 19: 03 chuong 3 - data sets](https://reader035.fdocuments.us/reader035/viewer/2022062419/558e74da1a28abe2478b45c3/html5/thumbnails/19.jpg)
19
Lớp DataTableMột số thuộc tính/phương thức trong DataTable
Thuộc tính • string TableName
Phương thức • void Clear()
• void AcceptChanges()
• void RejectChanges()
• DataRow[] Select()
• DataRow[] Select(string filterExp)
![Page 20: 03 chuong 3 - data sets](https://reader035.fdocuments.us/reader035/viewer/2022062419/558e74da1a28abe2478b45c3/html5/thumbnails/20.jpg)
20
Lớ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
![Page 21: 03 chuong 3 - data sets](https://reader035.fdocuments.us/reader035/viewer/2022062419/558e74da1a28abe2478b45c3/html5/thumbnails/21.jpg)
21
Lớp DataColumnKhá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)
![Page 22: 03 chuong 3 - data sets](https://reader035.fdocuments.us/reader035/viewer/2022062419/558e74da1a28abe2478b45c3/html5/thumbnails/22.jpg)
22
Lớp DataColumnTạ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ảngDataColumn 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);
![Page 23: 03 chuong 3 - data sets](https://reader035.fdocuments.us/reader035/viewer/2022062419/558e74da1a28abe2478b45c3/html5/thumbnails/23.jpg)
23
Lớp DataColumnThêm đối tượng DataColumn vào DataTable
tenTable.Columns.Add(tenColumn);
![Page 24: 03 chuong 3 - data sets](https://reader035.fdocuments.us/reader035/viewer/2022062419/558e74da1a28abe2478b45c3/html5/thumbnails/24.jpg)
24
Lớp DataColumnMột số thuộc tính/phương thức trong DataColumn
Thuộc tính • bool AllowDBNull• bool AutoIncrement• long AutoIncrementSeed• long AutoIncrementStep• string Caption• string ColumnName• Type DataType• object DefaultValue • string Expression• string MaxLength• bool ReadOnly• bool Unique• int Ordinal
Phương thức • void SetOrdinal(int ordinal)
![Page 25: 03 chuong 3 - data sets](https://reader035.fdocuments.us/reader035/viewer/2022062419/558e74da1a28abe2478b45c3/html5/thumbnails/25.jpg)
25
Lớ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
![Page 26: 03 chuong 3 - data sets](https://reader035.fdocuments.us/reader035/viewer/2022062419/558e74da1a28abe2478b45c3/html5/thumbnails/26.jpg)
26
Lớp DataRow
Các bước thêm dữ liệu vào DataTable• B1: DataRow row=tenBang.NewRow();
• B2: Thiết lập các giá trị cho đối tượng rowrow[“tenCot”] = giatrirow[index] = giatrirow[dataColObject] = giatri
• B3: tenBang.Rows.Add(row);
![Page 27: 03 chuong 3 - data sets](https://reader035.fdocuments.us/reader035/viewer/2022062419/558e74da1a28abe2478b45c3/html5/thumbnails/27.jpg)
27
Constraints
Khái niệm và phân loại ForeignKeyConstraint UniqueConstraint
![Page 28: 03 chuong 3 - data sets](https://reader035.fdocuments.us/reader035/viewer/2022062419/558e74da1a28abe2478b45c3/html5/thumbnails/28.jpg)
28
ConstraintsKhá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.
![Page 29: 03 chuong 3 - data sets](https://reader035.fdocuments.us/reader035/viewer/2022062419/558e74da1a28abe2478b45c3/html5/thumbnails/29.jpg)
29
ConstraintsForeignKeyConstraint
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);
tenBang.Constraints.Add(fk);
![Page 30: 03 chuong 3 - data sets](https://reader035.fdocuments.us/reader035/viewer/2022062419/558e74da1a28abe2478b45c3/html5/thumbnails/30.jpg)
30
ConstraintsForeignKeyConstraint
Định nghĩa hành vi cascade• DeleteRule
• UpdateRule
fk.DeleteRule = Rule.Cascade; // defaultfk.DeleteRule = Rule.SetNull;fk.DeleteRule = Rule.SetDefault;fk.DeleteRule = Rule.None;
![Page 31: 03 chuong 3 - data sets](https://reader035.fdocuments.us/reader035/viewer/2022062419/558e74da1a28abe2478b45c3/html5/thumbnails/31.jpg)
31
ConstraintsUniqueConstraint
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);
tenBang.Constraints.Add(uc);
![Page 32: 03 chuong 3 - data sets](https://reader035.fdocuments.us/reader035/viewer/2022062419/558e74da1a28abe2478b45c3/html5/thumbnails/32.jpg)
32
Primary 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, …};
![Page 33: 03 chuong 3 - data sets](https://reader035.fdocuments.us/reader035/viewer/2022062419/558e74da1a28abe2478b45c3/html5/thumbnails/33.jpg)
33
Lớ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
![Page 34: 03 chuong 3 - data sets](https://reader035.fdocuments.us/reader035/viewer/2022062419/558e74da1a28abe2478b45c3/html5/thumbnails/34.jpg)
34
Lớp DataRelationKhá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
![Page 35: 03 chuong 3 - data sets](https://reader035.fdocuments.us/reader035/viewer/2022062419/558e74da1a28abe2478b45c3/html5/thumbnails/35.jpg)
35
Lớp DataRelationTạ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);
![Page 36: 03 chuong 3 - data sets](https://reader035.fdocuments.us/reader035/viewer/2022062419/558e74da1a28abe2478b45c3/html5/thumbnails/36.jpg)
36
Lớp DataRelationTruy cập các dòng dữ liệu có liên quan
Thêm đối tượng DataRelation vào DataSet
DataRelation r;…ds.Relations.Add(r);
Truy cập các dòng dữ liệu liên quanDataRow[] rows;DataRow row;
rows = parentTable.Rows[index].GetChildRows(relation);row = childTable.Rows[index].GetParentRow(relation);
![Page 37: 03 chuong 3 - data sets](https://reader035.fdocuments.us/reader035/viewer/2022062419/558e74da1a28abe2478b45c3/html5/thumbnails/37.jpg)
37
![Page 38: 03 chuong 3 - data sets](https://reader035.fdocuments.us/reader035/viewer/2022062419/558e74da1a28abe2478b45c3/html5/thumbnails/38.jpg)
38
DataSet kiểu mạnh
Giới thiệu DataSet kiểu mạnh Tạo DataSet kiểu mạnh Sử dụng
![Page 39: 03 chuong 3 - data sets](https://reader035.fdocuments.us/reader035/viewer/2022062419/558e74da1a28abe2478b45c3/html5/thumbnails/39.jpg)
39
DataSet kiểu mạnhGiới thiệu DataSet kiểu mạnh
So sánh 2 đoạn mã• DataSet kiểu yếu
row = tenDS.Tables[“bangSV”].Rows[0];MessageBox.Show(row[“MaSV”]);
MessageBox.Show(tenDS.bangSV[0].MaSV);
• DataSet kiểu mạnh
![Page 40: 03 chuong 3 - data sets](https://reader035.fdocuments.us/reader035/viewer/2022062419/558e74da1a28abe2478b45c3/html5/thumbnails/40.jpg)
40
DataSet kiểu mạnhTạo DataSet kiểu mạnh
B1: Tạo DataSetClick phải chuột lên tên Project Add New Item: Chọn DataSet
![Page 41: 03 chuong 3 - data sets](https://reader035.fdocuments.us/reader035/viewer/2022062419/558e74da1a28abe2478b45c3/html5/thumbnails/41.jpg)
41
DataSet kiểu mạnhTạo DataSet kiểu mạnh
B2: Tạo bảngKéo DataTable vào Designer
![Page 42: 03 chuong 3 - data sets](https://reader035.fdocuments.us/reader035/viewer/2022062419/558e74da1a28abe2478b45c3/html5/thumbnails/42.jpg)
42
DataSet kiểu mạnhTạo DataSet kiểu mạnh
B3: Tạo cộtClick phải lên bảng trong designer
Add Column
![Page 43: 03 chuong 3 - data sets](https://reader035.fdocuments.us/reader035/viewer/2022062419/558e74da1a28abe2478b45c3/html5/thumbnails/43.jpg)
43
DataSet kiểu mạnhTạo DataSet kiểu mạnh
B4: Tạo khóa chính Chọn các cột Click phải lên cột
Set Primary Key
![Page 44: 03 chuong 3 - data sets](https://reader035.fdocuments.us/reader035/viewer/2022062419/558e74da1a28abe2478b45c3/html5/thumbnails/44.jpg)
44
DataSet kiểu mạnhTạo DataSet kiểu mạnh
B5: Thiết lập quan hệKéo Relation từ toolbox vào Designer
![Page 45: 03 chuong 3 - data sets](https://reader035.fdocuments.us/reader035/viewer/2022062419/558e74da1a28abe2478b45c3/html5/thumbnails/45.jpg)
45
DataSet kiểu mạnhTạo DataSet kiểu mạnh
![Page 46: 03 chuong 3 - data sets](https://reader035.fdocuments.us/reader035/viewer/2022062419/558e74da1a28abe2478b45c3/html5/thumbnails/46.jpg)
46
DataSet kiểu mạnhSử dụng
Các lớp dữ liệu được tạo ra trong lớp DataSet• XLXeDataSet.NhanVienDataTable
• XLXeDataSet.XeDataTable
• XLXeDataSet.PhanCongDataTable
• XLXeDataSet.NhanVienRow
• XLXeDataSet.XeRow
• XLXeDataSet.PhanCongRow
![Page 47: 03 chuong 3 - data sets](https://reader035.fdocuments.us/reader035/viewer/2022062419/558e74da1a28abe2478b45c3/html5/thumbnails/47.jpg)
47
DataSet kiểu mạnhSử dụng
Truy cập các đối tượng bảng thông qua property• XLXeDataSet ds = new XLXeDataSet();
– ds.Xe– ds.NhanVien– ds.PhanCong
![Page 48: 03 chuong 3 - data sets](https://reader035.fdocuments.us/reader035/viewer/2022062419/558e74da1a28abe2478b45c3/html5/thumbnails/48.jpg)
48
DataSet kiểu mạnhSử 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)
![Page 49: 03 chuong 3 - data sets](https://reader035.fdocuments.us/reader035/viewer/2022062419/558e74da1a28abe2478b45c3/html5/thumbnails/49.jpg)
49
DataSet kiểu mạnhSử dụng
Truy cập các giá trị thông qua property• ds.NhanVien[i].MaNV
• ds.NhanVien[i].Ho
• ds.NhanVien[i].Ten
• ds.NhanVien[i].NgayVaoLam
Lấy những dòng có liên quan• DataRow[] rows = ds.NhanVien[i].GetChildRows();
• DataRow row = ds.NhanVien[i].GetParentRow();
![Page 50: 03 chuong 3 - data sets](https://reader035.fdocuments.us/reader035/viewer/2022062419/558e74da1a28abe2478b45c3/html5/thumbnails/50.jpg)
50
Mộ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
![Page 51: 03 chuong 3 - data sets](https://reader035.fdocuments.us/reader035/viewer/2022062419/558e74da1a28abe2478b45c3/html5/thumbnails/51.jpg)
51
Một số đoạn mãDuyệt qua các bảng trong DataSet
![Page 52: 03 chuong 3 - data sets](https://reader035.fdocuments.us/reader035/viewer/2022062419/558e74da1a28abe2478b45c3/html5/thumbnails/52.jpg)
52
Một số đoạn mãDuyệt qua các dòng trong DataTable
![Page 53: 03 chuong 3 - data sets](https://reader035.fdocuments.us/reader035/viewer/2022062419/558e74da1a28abe2478b45c3/html5/thumbnails/53.jpg)
53
Một số đoạn mãDuyệt qua các cột trong DataTable
![Page 54: 03 chuong 3 - data sets](https://reader035.fdocuments.us/reader035/viewer/2022062419/558e74da1a28abe2478b45c3/html5/thumbnails/54.jpg)
54
Tóm tắt chương 3