2. 22
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
Sử dụng Visual Studio 2005
Wizards để thực hiện các hoạt
động theo cơ chế ngắt kết nối
1. Tổng quan về Typed Dataset
2. So sánh DataSet không định kiểu với DataSet
có định kiểu
3. Table Adapter là gì ?
3. 33
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
1. Tổng quan về Typed Dataset
• Khái niệm
• Giới thiệu các công cụ tạo ra Typed Dataset
4. 44
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
Khái niệm
• Type Dataset còn gọi là Strong Typed Dataset
• Nó là một lớp kế thừa từ System.Data.DataSet
và nó có thể chứa các kiểu dữ liệu, các thuộc tính
và các phương thức lồng vào nhau
• Typed Dataset và các thành viên của nó gọi
chung là Strong-typed object (DataTable,
DataColumn, …)
5. 55
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
Khái niệm
• Giúp cho người dùng truy cập dữ liệu theo
cách an toàn kiểu (type-safe way)
• Schema của Typed Dataset được biểu diễn
dưới dạng tập tin XML Schema có phần mở rộng
là .xsd
6. 66
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
Giới thiệu các công cụ tạo ra
Typed Dataset
• Dataset Designer
• Data Source Configuration Wizard
7. 77
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
Giới thiệu các công cụ tạo ra
Typed Dataset
• Dataset Designer
Nhấn chuột phải vào Project, chọn Add New Item…
Chọn biểu tượng trong khung Templates Add
Đã tạo xong một Typed Dataset
Tiếp tục tạo các thành viên bên trong:
sử dụng công cụ Dataset
8. 88
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
Giới thiệu các công cụ tạo ra
Typed Dataset
• Data Source Configuration Wizard
Trên thực đơn, chọn Data Add New Data Source…
Chọn loại Data Source: chọn
Chọn Data Connection: tạo mới hoặc đã có rồi
Chọn Database Objects và đặt tên Dataset
Chọn DataShow Data Source để xem kết quả vừa tạo
9. 99
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
Giới thiệu các công cụ tạo ra
Typed Dataset
• Data Source Configuration Wizard
Click vào icon Edit DataSet with Designer để mở cửa sổ
thiết kế Dataset
10. 1010
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
1. So sánh DataSet không định kiểu
với DataSet có định kiểu
• So sánh Untyped và Typed Dataset
• Truy cập Data Table trong Typed Dataset
• Truy cập dữ liệu trong Typed Data Table
• Quản lý Rows và Columns trong Typed Data
Table
11. 1111
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
So sánh Untyped và Typed Dataset
12. 1212
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
So sánh Untyped và Typed Dataset
• Ví dụ
13. 1313
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
Minh họa Untyped và Typed Datset
• Tạo một Dataset có tên là EmployeeDS
• Khai báo Dataset
• Truy xuất Table
• Truy xuất cột
• Xem lỗi phát sinh
14. 1414
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
Truy cập Data Table trong Typed
Dataset
• Lớp Typed Dataset chứa các lớp Typed
DataTable tương ứng với các table có trong
Typed Dataset
• Các lớp Typed DataTable kế thừa từ lớp
System.Data.DataTable
15. 1515
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
Truy cập Data Table trong Typed
Dataset
• Thao tác truy cập
Giả sử ta có Dataset tên là AdventureWorksDataSet
Có 2 Table CountryRegion và CountryRegionCurrency
trong DataSet này
16. 1616
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
Truy cập Data Table trong Typed
Dataset
• Thao tác truy cập
AdventureWorksDataSet ds = new AdventureWorksDataSet();
AdventureWorksDataSet.CountryRegionDataTable dt =
ds.CountryRegion;
AdventureWorksDataSet.CountryRegionDataTable dt2 =
ds.CountryRegionCurrency;
17. 1717
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
Minh họa truy cập DataTable trong
Typed Datset
• Khai báo TableAdapter
• Khai báo Dataset
• Khai báo DataTable
• Lắp dữ liệu vào DataTable
18. 1818
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
Truy cập dữ liệu trong Typed Data
Table
• Lớp Typed Dataset chứa các lớp Typed
DataRow tương ứng với các table có trong
Typed Dataset
• Các lớp Typed DataRow kế thừa từ lớp
System.Data.DataRow
• Truy xuất trực tiếp tên cột trên đối tượng
DataRow
19. 1919
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
Truy cập dữ liệu trong Typed Data
Table
• Thao tác
//truy xuất dòng đầu tiên
AdventureWorksDataSet.CountryRegionRow dr = dt[0]
//truy xuất cột CountryRegionCode và Name
Console.WriteLine(“Ma vung: {0}, Ten: {1}",
dr.CountryRegionCode.ToString(), dr.Name);
//Hoặc sử dụng Dataset để truy xuất cột trực tiếp
ds.CountryRegion[<chỉ số dòng>].CountryRegionCode
20. 2020
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
Minh họa truy cập dữ liệu trong
Typed DataTable
• Truy xuất dòng
• Truy xuất cột
21. 2121
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
Quản lý Rows và Columns trong
Typed Data Table
• Typed DataTable cung cấp một số phương
thức để truy cập các dòng
• Các phương thức này làm việc với lớp
DataRow
22. 2222
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
Quản lý Rows và Columns trong
Typed Data Table
23. 2323
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
Minh họa phương thức của
DataTable
• Tìm dòng có giá trị khóa chính là “AF”
(CountryRegionCode)
24. 2424
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
2. Table Adapter là gì ?
• Khái niệm
• Các phương thức chuẩn trong Table Adapter
Class
• Tạo thêm các truy vấn cho Table Adapter
25. 2525
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
Khái niệm
• Table Adapter là một lớp được phát sinh từ
công cụ Wizard khi ta thêm một DataTable vào
Dataset
• Lớp này cung cấp một số phương thức hỗ trợ
người dùng thao tác dữ liệu (xóa, lưu, …)
26. 2626
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
Các phương thức chuẩn trong
Table Adapter Class
27. 2727
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
Minh họa phương thức của
TableAdapter
• Xóa dòng được tìm thấy từ minh hoạ trước
• Thêm một dòng mới
28. 2828
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
Tạo thêm các truy vấn cho Table
Adapter
• Tạo thêm các phương thức khác theo yêu cầu
cụ thể:
Trả về tập hợp các dòng bằng cách tạo ra
phương thức Fillxxx và GetDataxxx
Trả về một giá trị tính toán như số tổng, số trung
bình, …
Thêm, xóa, sửa trực tiếp một dòng trong CSDL
29. 2929
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
Minh họa tạo thêm các custom
query
• Tạo thêm truy vấn có điều kiện cụ thể
• Tạo thêm truy vấn có tham số
30. 3030
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
Bài thực hành
• Tạo một Typed Dataset từ CSDL
AdventureWorks
• Bổ sung table Department vào Dataset
• Sử dụng các phương thức của TableAdapter để
cập nhật dữ liệu trực tiếp
Editor's Notes
4 tiết Giới thiệu Microsoft® Visual Studio® 2005 cung cấp bộ công cụ hổ trợ giúp bạn tạo ra các dataset có định kiểu (typed datasets ). Trong một project, khi bạn tạo ra một dataset có định kiểu thì Visual Studio sẽ phát sinh một lớp để nhận diện cấu trúc các bảng, các cột và các dòng trong dataset. Làm việc với dataset có định kiểu thì dễ dàng hơn dataset không định kiểu vì nó cung cấp thông tin lúc biên dịch (compile-time) chương trình (hay kiểm tra kiểu dữ liệu) và trình cảm ứng thông minh (Microsoft IntelliSense® ) về cấu trúc của dataset Bài này sẽ hướng dẫn cách sử dụng Visual Studio 2005 wizards để tạo ra typed dataset và cách thức làm việc với typed dataset theo 2 cách: tự động và sử dụng các tính năng bingding dữ liệu trong Visual Studio 2005.
Visual Studio giúp cho bạn tạo ra dataset có định kiểu ( typed datasets). Dataset có định kiểu là một lớp kế thừa từ System.Data.DataSet và nó có thể chứa các kiểu dữ liệu, các thuộc tính và các phương thức lồng vào nhau, đặc điểm này sẽ giúp cho bạn truy cập dữ liệu theo cách an toàn kiểu (type-safe way). Schema của dataset có định kiểu được biễu diễn dưới dạng tập tin XML Schema có phần mở rộng là .xsd
Có thể minh họa bằng hình sau: DAL (Data Access Layer) có thể được xem như một thư viện lớp tách biệt. Nó cung cấp cho chúng ta các phương thức thao tác với cơ sở dữ liệu và tạo ra các dữ liệu chuẩn
Minh hoạ trên Window form
Minh hoạ trên Window form
Minh hoạ trên Window form
Mô hình ngắt kết nối của Microsoft ADO.NET gồm có các lớp như DataSet , DataTable , DataColumn , and DataRow , các lớp này giúp bạn lưu trữ dữ liệu trong bộ nhớ và làm việc với dữ liệu khi không có kết nối. Các lớp này cũng cung cấp các tập hợp trả về các đối tượng chuẩn khác nhau, bất chấp kiểu dữ liệu trong dataset Chẳng hạn như nếu bạn đặt chỉ số trong tập hợp cột của DataRow thì bạn luôn luôn nhận được đối tượng DataColumn , bất kể kiểu dữ liệu của cột đó. Tương tự, nếu nếu bạn đặt chỉ số trong tập hợp Table của DataSet thì bạn luôn luôn nhận được đối tượng DataTable , bất kể bạn yêu cầu Table nào Các lớp có liên quan với dataset (dataset-related classes) được xây dựng sẵn trong Microsoft .NET Framework thì được xem như là dataset không định kiểu ( untyped datasets .)
Minh hoạ bài project Windows: MHoa_Bai6_01
Có minh hoạ bài project Windows: MHoa_Bai6_01
Minh hoạ bài project Windows: MHoa_Bai6_01
Minh hoạ bài project Windows: MHoa_Bai6_01
Có thể sử dụng lại bài Minh hoạ bài project Windows: MHoa_Bai6_01 để minh hoạ thêm các phương thức này
Có thể sử dụng lại bài Minh hoạ bài project Windows: MHoa_Bai6_01 để minh hoạ thêm các phương thức này
Ngoài các phương thức chuẩn được tạo sẵn, ta cũng có thể tạo thêm các phương thức khác theo yêu cầu cụ thể, chẳng hạn như, bạn có thể tạo truy vấn đễ thực hiện các tác vụ sau: Trả về tập hợp các dòng bằng cách tạo ra phương thức Fillxxx và GetDataxxx Trả về một giá trị tính toán như số tổng, số trung bình, … Chèn một dòng mới trực tiếp vào CSDL Xóa một dòng trực tiếp trong CSDL Cập nhật 1 dòng trực tiếp trong CSDL
Giáo viên tạo trực tiếp để minh họa Không có bài minh hoạ, chỉ có bài trợ giúp cho giáo viên xem thêm: project LapTrinhADO_Web: DataSet_Product.xsd và Mhoa_Bai6.aspx
Trước khi cho học viên làm bài thực hành, giáo viên có thể minh họa thêm về thao tác drag-drop một table trong TypedDataset vào một form (tạo ra DataGridView) Có thể minh hoạ các thao tác cập nhật trên DataGridView, sau đó cập nhật xuống CSDL Bài trợ giúp : project LaptrinhADO_Win, Mhoa_Bai06