Bài giảng Lập trình web ASP.Net - Chương 4: Xử lí dữ liệu với ADO.NET - Vũ Đức Lung

pdf 70 trang huongle 4170
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lập trình web ASP.Net - Chương 4: Xử lí dữ liệu với ADO.NET - Vũ Đức Lung", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfbai_giang_lap_trinh_web_asp_net_chuong_4_xu_li_du_lieu_voi_a.pdf

Nội dung text: Bài giảng Lập trình web ASP.Net - Chương 4: Xử lí dữ liệu với ADO.NET - Vũ Đức Lung

  1. TrTrươườ̀ ngng ĐĐaạ̣ ii HHoọ̣ cc LLaạ̣ cc HHôồ̀ ngng 20092009 20102010 LLÂẬ̣ PP TTRIRÌ̀NHNH WEBWEB ASP.NETASP.NET Ts.Ts. VVuũ̃ ĐưĐứ́ cc LungLung Ks.Ks. HHuyuỳ̀ nhnh CaoCao TuTuâấ́ nn Ks.Ks. PPhanhan HHưữ̃ uu TiTiêế́ pp ChChươươngng 4:4: XXửử LýLý DDữữ LiLiệệuu VVớớii ADO.NETADO.NET 1 LHULHU
  2. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p NNộộii dungdung chchíínhnh  Giới thiệu về ADO.NET  Các đối tượng trong ADO.NET  Điều khiển liên kết dữ liệu 2 http:// lhu.edu.vn
  3. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p GiGiớớii thithiệệuu vvềề ADO.NETADO.NET  ADO.NET (Active Data Object) là một phần của .NET Framework, cung cấp các dịch vụ xử lý dữ liệu  Làm việc với dữ liệu không kết nối  Dữ liệu được lưu trữ trong một CSDL thu nhỏ gọi là DataSet =>tăng tốc độ tính toán, giảm sử dụng tài nguyên trên Database server.  Khả năng xử lý dữ liệu dạng chuẩn XML =>làm việc với nhiều ứng dụng khác 3 http:// lhu.edu.vn
  4. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p GiGiớớii thithiệệuu vvềề ADO.NETADO.NET 4 http:// lhu.edu.vn
  5. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p GiGiớớii thithiệệuu vvềề ADO.NETADO.NET  Kiến trúc ADO.NET có hai đ ối tượng chính: Dataset (data table) và .NET data provider (Data Adapter, DataReader, Command, Connection)  Dataset lưu data từ Database  Để nhận data từ CSDL, DataAdapter dùng câu lệnh SELECT trong Command, đ ể cập nhật data dùng INSERT, UPDATE, DELETE 5 http:// lhu.edu.vn
  6. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p GiGiớớii thithiệệuu vvềề ADO.NETADO.NET  Các thành phần trong ADO.NET . DataSet . DataTable . DataView . DataRow . DataColumn . DataRelation 6 http:// lhu.edu.vn
  7. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p CCáácc ththàànhnh phphầầnn trongtrong ADO.NETADO.NET  Managed provider component: gồm DataAdapter, DataReader giữ nhiệm vụ làm việc trực tiếp như tập tin, database,  Content component: gồm Dataset, DataTable, đại diện cho dữ liệu thực sự cần làm việc. . DataReader là đối tượng mới, giúp việc truy xuất dữ liệu nhanh chóng nhưng chỉ được phép đọc và di chuyển tới . Dataset cũng là đối tượng mới, không chỉ là dữ liệu, Dataset còn có thể coi là một bản sao gọn nhẹ của CSDL trong bộ nhớ với nhiều bảng và có các mối quan hệ. Dataset hỗ trợ XML thông qua đối tượng XMLDataDocument. . DataAdapter là đ ối tượng kết nối giữa DataSet và CSDL. Nó gồm Connection và Commmand , để cung cấp dữ liệu cho Dataset, cũng như cập nhật dữ liệu từ DataSet xuống CSDL. 7 http:// lhu.edu.vn
  8. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p CCáácc ththàànhnh phphầầnn trongtrong ADO.NETADO.NET 8 http:// lhu.edu.vn
  9. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p CCáácc ththàànhnh phphầầnn trongtrong ADO.NETADO.NET 9 http:// lhu.edu.vn
  10. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p CCáácc ththàànhnh phphầầnn trongtrong ADO.NETADO.NET  DataSet: . DataSet dùng để chứa dữ liệu lấy từ CSDL lớn ( SQL, Aceess) sau đó mọi thông tin cần thiết sẽ được truy xuất từ DataSet . Nói 01 cách khác DataSet là CSDL thu nhỏ từ CSDL lớn . Trong Dataset sẽ chứa các bảng là thông tin mà chúng ta cần lấy.Trong DataSet sẽ có nhiều DataTable và các mối quan hệ giữa chúng đại diện bởi các DataRelation . Dataset giống như là hình ảnh về CSDL trong bộ nhớ . 10 http:// lhu.edu.vn
  11. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p CCáácc ththàànhnh phphầầnn trongtrong ADO.NETADO.NET  Lợi ích trong việc sử dụng DataSet . Hoàn toàn trong bộ nhớ: Một Table trong Dataset là một Array of Rows, nên ta có thể dùng thẳng (direct access) một record bằng cách nói đến cái Row chứa nó, chớ không cần phải dùng MoveNext, MovePrev,.v.v. . Làm nhẹ công tác của Database server. Tất cả mọi công tác sửa đổi dữ liệu đều được thực hiện trong Dataset. . Dataset có thể đư ợc biểu diễn bằng một XML (eXtensible Marked Language) 11 http:// lhu.edu.vn
  12. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p CCáácc ththàànhnh phphầầnn trongtrong ADO.NETADO.NET  DataTable: . DataTable là 01 thành phần trong Dataset . DataTable chứa dữ liệu của 01 bảng trong Dataset và thuộc lớp DataTable.Datable bao gồm • Tập hợp Columns thuôc lớp DataColumnCollectiontrong đó mỗi cột là một đối tượng thuộc lớp DataColumn • Tập hợp Rows thuôc lớp DataRowCollectiontrong đó mỗi cột là một đối tượng thuộc lớp DataRow 12 http:// lhu.edu.vn
  13. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p CCáácc ththàànhnh phphầầnn trongtrong ADO.NETADO.NET  DataRelation: . Dataset bao gồm tập hợp các table đại diện bởi các đối tượng DataTable và quan hệ giữa các table đó đ ại diện bởi các đối tượng DataRelation . DataRelation, người dùng có thể: • Định nghĩa mối quan hệ giữa các bảng • Duyệt dữ liệu trong các bảng theo mối quan hệ Master – Detail . aMột đối tượng kiểu DataRelation bao gồm các thông tin: • Tên của Parent Table và Child Table • Các column trong DataRelation đại diện cho PrimaryKey trong Parent và ForeignKey trong Child Table 13 http:// lhu.edu.vn
  14. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p CCáácc ththàànhnh phphầầnn trongtrong ADO.NETADO.NET  DataRelation: . Với DataRelation, ADO.NET cung cấp cho người lập trình một cách thức mới để xử lý dữ liệu. Dữ liệu vẫn nằm trong các bảng thay vì b ị gom từ nhiều bảng thành 01 RecordSet nhưng v ẫn có thể truy cập dễ dàng và hiệu quả. . Ví dụ: trong parent table có 10 dòng, mỗi dòng trong Parent table có 10 dòng con trong Child table . Cách cũ: dùng 01 truy vấn kết hợp hai bảng để lấy 1 lần 100 mẫu tin hay dùng 02 RecordSet, mỗi lần RecordSet Master thay đổi mẫu tin hiện hành thì mở lại RecordSet Detail 14 http:// lhu.edu.vn
  15. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p CCáácc ththàànhnh phphầầnn trongtrong ADO.NETADO.NET  DataRelation: . Khuyết điểm: dữ liệu bị lấy thừa vì không chắc người dùng sẽ đi xem hết 100 mẫu tin đã lấy và khó thao tác thêm, sửa, xóa, Với cách thứ 2, dữ liệu chỉ lấy vừa đủ nhưng ch ậm hơn vì mỗi lần thay đổi Master lại phải truy vấn dữ liệu cho Detail . Phương pháp mới: Chỉ cần lấy dữ liệu 01 lần duy nhất nhưng dữ liệu vẫn nằm trong các bảng, dễ dàng thao tác xử lý 15 http:// lhu.edu.vn
  16. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p CCáácc ththàànhnh phphầầnn trongtrong ADO.NETADO.NET  Ràng Buộc Trên Quan Hệ: ADO.NET chỉ cho phép xác định 02 loại ràng buộc . UniqueConstraint: đảm bảo tính duy nhất về giá trị của một cột trong table . ForeignKeyContraint: chỉ ra cách ứng dụng sẽ thực hiện khi cập nhật hay xóa dữ liệu trên bảng có quan hệ với bảng khác  Các giá trị của ForeignKeyContraint là: . None: không làm gì cả . Cascade: phụ thuộc vào dòng trên parent table sẽ bị cập nhật hay xóa . SetDefault:giá trị của cột khóa ngoại trên detail table được đặt về giá trị mặc định khi dòng trên parent table bị xóa . SetNull: giống SetDefault , giá trị được đặt là NULL 16 http:// lhu.edu.vn
  17. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p CCáácc ththàànhnh phphầầnn trongtrong ADO.NETADO.NET  DataView: . aDataView gần giống với khái niệm RecordSet của ADO. Trên một DataTable có thể tạo nhiều DataView với các điều kiện lọc, sắp xếp dữ liệu khác nhau. Trên DataView ta có thể xem hay thay đổi giá trị các mẫu tin . DataView của ADO.NET có nhiệm vụ kết nối với các control của WinForm và Web Form 17 http:// lhu.edu.vn
  18. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p ĐĐiiểểmm nnổổii bbậậtt trongtrong ADO.NETADO.NET  Tương tác giữa nhiều hệ thống khác nhau (Interoperability)  Hỗ trợ nhiều người dùng (Scanlability)  Mở rộng khả năng làm việc với CSDL (Productivity)  Hiệu quả cao trong xử lý dữ liệu (Performance)  Cơ chế làm việc ở ADO.NET: . Xử dụng dữ liệu ở dạng disconnect data . Client tạo kết nối với server để lấy dữ liệu . Server gửi dữ liệu về cho Client . Client ngắt kết nối với Server . Khi cần cập nhật dữ liệu, kết nối giữa Client và Server đư ợc phục hồi . Thời gian kết nối giữa Client và Server không còn lâu như trước 18 http:// lhu.edu.vn
  19. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p CCáácc đđốốii ttưượợngng trongtrong ADO.NETADO.NET  Khai báo và sử dụng không gian tên (namespace) Namespace Mục đích -System.Data -Các đối tượng và kiểu cơ bản phục vụ ADO.NET -System.Data.OleDb -Các lớp được thiết kế để làm việc với bất kỳ nguồn dữ liệu nào -System.Data.SqlClient - Thiết kế tối ưu cho CSDL SQL server 19 http:// lhu.edu.vn
  20. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p ĐĐốốii ttưượợngng ConnectionConnection  Data Provider: . Data Provider có sẵn trong ADO.NET • System.Data.OleDb • System.Data.SqlClient  Ứng với mỗi tên miền có một connection tương ứng . System.Data.OleDb.OleDbConnection . System.Data.SqlClient.SqlConnection  Cả OleDBConnection và SQLConnection đều có các thuộc tính và phương th ức giống nhau như ConnectionString , State hay Open - Các Provider mà OLEDB và SQL có thể kết nối dữ liệu: . SQLOLEDB: OLEDB Provider của Microsoft cho SQL Server . MSDAORA: OLEDB Provider của Microsoft cho Oracle . JOLT: OLEDB Provider cho Jet 20 http:// lhu.edu.vn
  21. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p ĐĐốốii ttưượợngng ConnectionConnection  Connection String:Cung cấp thông tin cần thiết cho kết nối.  Trước khi thực hiện kết nối cần thông báo các thông tin cần thiết cho Connection thông qua thuộc tính Connection String. Cách khai báo thay đổi tùy thuộc vào Data Provider.  Phụ thuộc vào Data Provider  OleDB Provider có thể gồm các thành phần: 21 http:// lhu.edu.vn
  22. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p ĐĐốốii ttưượợngng ConnectionConnection  Ví dụ 1: Tạo connection đến CSDL Microsoft Access  Ví dụ 2: Tạo connection đến CSDL SQL Server 22 http:// lhu.edu.vn
  23. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p ĐĐốốii ttưượợngng ConnectionConnection 23 http:// lhu.edu.vn
  24. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p ĐĐốốii ttưượợngng ConnectionConnection  Ví dụ 3: Tạo connection đến CSDL SQL Server 24 http:// lhu.edu.vn
  25. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p ĐĐốốii ttưượợngng ConnectionConnection  Ví dụ 4: Tạo connection đến CSDL SQL Server 25 http:// lhu.edu.vn
  26. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p CCÁÁCC ĐĐỐỐII TTƯƯỢỢNGNG TRONGTRONG ADO.NETADO.NET I.CONNECTION: Các bước thực hiện tiến hành kết nối Bước 1: tạo 1 file có đuôi .UDL. Nhấp đúp vào file để kích hoạt Bước 2: 01 hộp thoại xuất hiện: Chọn mục: Microsoft OLEDB Provider for SQL Server Trong Tab Provider 26 http:// lhu.edu.vn
  27. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p CCÁÁCC ĐĐỐỐII TTƯƯỢỢNGNG TRONGTRONG ADO.NETADO.NET I.CONNECTION: 1.Gõ tên Server 2. Chọn quyền kết nối 3 .Nhập username và pass word 4. Chọn 5. Nhấn Database TestConnection sử dụng 27 http:// lhu.edu.vn
  28. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p CCÁÁCC ĐĐỐỐII TTƯƯỢỢNGNG TRONGTRONG ADO.NETADO.NET I.CONNECTION: Bước 3: Mở File vừa tạo bằng Norepad ta sẽ có chuỗi kết nối. Đăng nhập bằng quyền Window Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=ETEST;Data Source=GOATM Đăng nhập bằng username và password Provider=SQLOLEDB.1;Persist Security Info=False;User ID=etest;Initial Catalog=ETEST;Data Source=GOATM 28 http:// lhu.edu.vn
  29. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p CCÁÁCC ĐĐỐỐII TTƯƯỢỢNGNG TRONGTRONG ADO.NETADO.NET I.CONNECTION: Tạo connection đến CSDL SQL: Imports System.Data.slqClient Dim strconnection as string Strconnction= “Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=ETEST;Data Source=GOATM” Dim cnn as new SqlConnection(strconnection) 29 http:// lhu.edu.vn
  30. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p ĐĐốốii ttưượợngng ConnectionConnection  Các phương thức cần chú ý trong Connection . Close: đ óng kết nối với nguồn dữ liệu. Sử dụng phương thức này để đóng Connection đang mở . Open: Thực hiện kết nối với các thông tin đã khai báo trong ConnectionString . Dispose: Xóa mọi tài nguyên liên quan đến Connection trên vùng nhớ . CreateCommand: Tạo và trả về 01 Command dựa vào Connection hiện hành  Ví dụ: . ConnDB.Open() . ConnDB.Close() . ConnDB.Dispose() 30 http:// lhu.edu.vn
  31. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p ĐĐốốii ttưượợngng ConnectionConnection  Một số đặc tính quan trọng khác của OleDbConnection Đặc tính Dạng data Ý nghĩa Connection Int32 khoảng thời gian cố gắng tạo liên Timeout kết VD: ConnString= "Provider .; Connect Tirneout=11" Database String Trả về tên CSDL đã kết nối ServerVersi String Trả về version của nguồn CSDL on State StateConnection Trả về trạng thái hiện tại của đối (0,1,2,4,8,16) tượng: actived hay hủy rồi 31 http:// lhu.edu.vn
  32. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p ĐĐốốii ttưượợngng CommandCommand  Sau khi tạo kết nối đến nguồn dữ liệu, mọi thao tác trên nguồn dữ liệu đó đều được thực hiện thông qua Command. Tùy theo loại Connection, đối tượng Command thuộc tên miền sau: 32 http:// lhu.edu.vn
  33. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p ĐĐốốii ttưượợngng CommandCommand  Khai báo và sử dụng đối tượng Command: . đối với SqlConnection: • Dim MyCom As SqlCommand • MyCom = New SqlCommand(ConnString, ConnDB) . đối với OleDbConnection • Dim MyCom As OleDbCommand • MyCom = New OleDbCommand(ConnString,ConnDB) 33 http:// lhu.edu.vn
  34. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p ĐĐốốii ttưượợngng CommandCommand II.COMMAND: Các thuộc tính của Command:  CommandText: lệnh SQL hay tên Procedure muốn thực hiện trên nguồn dữ liệu (đọc ghi)  CommandType:giá trị cho biết nội dung CommandText là gì với các giá trị như sau:  Text: (mặc định)một câu lệnh SQL  StoreProcedure: tên 01 thủ tục nội  TableDirect: khi CommandType có giá trị này, CommandText là tên của 01 bảng. Khi Command thực hiện sẽ trả về đủ các dòng và cột ( chỉ dùng cho OleDbCommand) Connection: Đối tượng Connection sử dụng cho Command Parameters: Tập hợp các tham số dùng trong Command 34 http:// lhu.edu.vn
  35. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p ĐĐốốii ttưượợngng CommandCommand  Các phương thức thực hiện Command . ExecuteNonquery: Dùng để gọi thực hiện các câu truy vấn cập nhật INSERT, UPDATE, DELETE mà không quan tâm đến dữ liện trả về. 35 http:// lhu.edu.vn
  36. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p ĐĐốốii ttưượợngng CommandCommand  ExecuteReader: Trả về một đối tượng DataReader để đọc dữ liệu mỗi lần một dòng với method Read(). DataReader đọc dữ liệu trực tiếp từ Database => duy trì kết nối cho đến khi đọc xong . Gọi: MyCom.ExecuteReader()  ExecuteScalar: phương thức này thực hiện lệnh của Command và chỉ trả về giá trị của cột đầu tiên hay dòng đầu tiên. Chúng ta thường gọi phương thức này khi muốn Command thực hiện các lệnh tính toán Sum, COUNT, AVG trên nguồn dữ liệu ngay lúc thực thi. Cú pháp như sau: . MyCom.ExecuteScalar() 36 http:// lhu.edu.vn
  37. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p ĐĐốốii ttưượợngng CommandCommand II.Paramater: - Lệnh SQL trong CommandText có thể sử dụng các dấu ? thay thế cho trị không xác định và khi thực hiện sẽ dùng đối tượng Parameter để truyền giá trị vào các dấu ?. Tùy theo Command, Paramater sẽ khai báo từ lớp OleDBParameter hay SQLParameter. Cú pháp khai báo: Dim as new OleDbParameter | SqlParameter Dim as new OleDbParameter | SqlParameter( Dim as new OleDbParameter | SqlParameter( , ) 37 http:// lhu.edu.vn
  38. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p ĐĐốốii ttưượợngng CommandCommand Paramater: Các thuộc tính của Parameter:  Direction: giá trị cho biết loại tham số với các giá trị sau: (đọc ghi)  input(mặc định): loại tham số đầu vào  InputOutput: loại tham số vào và ra  Output: loại tham số ra  ReturnValue: loại tham số nhận giá trị trả về của 01 thủ tục nội, một hàm hay một hàm do người dùng định nghĩa  OledbType / SqlDBType :kiểu dữ liệu Oledb hay SqlDB của tham số(đọc ghi)  ParameterName: tên tham số (đọc ghhi)  Value: giá trị của tham số (đọc ghi) 38 http:// lhu.edu.vn
  39. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p ĐĐốốii ttưượợngng CommandCommand Paramater: Ví dụ 1: cmd.CommandText=“select * from CTNHAP where sopn=@sp” Dim par as SqlParameter=cmd.CreateParameter() Par.Parametername=“@sp” Par.Value=“PN01” cmd.Parameter.Add(Par) 39 http:// lhu.edu.vn
  40. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p ĐĐốốii ttưượợngng CommandCommand Paramater: Ví dụ 2: cmd.CommandText=“select * from CTNHAP where sopn=@sp and mavtu=@vt” Dim ts1 as SqlClient.Sqlparameter=cmd.parameters.Add(“@vt”,sqlDbType.Char,4) Ts1.Value=“S001” Dim ts2 as SqlClient.Sqlparameter=cmd.parameters.Add(“@sp”,sqlDbType.Char,4) Ts2.Value=“PN01” Chú thích: thứ tự đưa tham số vào tùy ý vì phải chỉ đúng tên tham số trong SQL 40 http:// lhu.edu.vn
  41. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p QuyQuy trtrììnhnh ssảảnn xuxuấấtt 0011 CCSDLSDL đơđơnn gigiảảnn trongtrong ASP.NETASP.NET 41 http:// lhu.edu.vn
  42. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p VVíí ddụụ:: CreateCreate aa DatabaseDatabase ConnectionConnection 42 http:// lhu.edu.vn
  43. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p VVíí ddụụ:: CreateCreate aa DatabaseDatabase CommandCommand 43 http:// lhu.edu.vn
  44. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p VVíí ddụụ:: CreateCreate aa DataReaderDataReader 44 http:// lhu.edu.vn
  45. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p BindBind toto aa RepeaterRepeater ControlControl andand CloseClose thethe DatabaseDatabase ConnectionConnection 45 http:// lhu.edu.vn
  46. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p RepeaterRepeater ControlControl 46 http:// lhu.edu.vn
  47. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p TTạạoo kkếếtt nnốốii vvớớii CSDLCSDL đđộộngng  Demo tạo kết nối và hiển thị  DataSet  DataAdapter  DataTable  DataView 47 http:// lhu.edu.vn
  48. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p DataSetDataSet  Đây là 01 mô hình thu nhỏ đáp ứng nhu cầu của ứng dụng  DataSet chứa các bảng(DataTable), các quan hệ(DataRelation) và các ràng buộc ( Contraint)  DataSet thuộc tên miền sau: System.Data.DataSet  Các chức năng chính của DataSet: . Làm việc với dữ liệu không liên kết . Khả năng dịch chuyển, sắp sếp, tìm và lọc dữ liệu . Cache những thay đổi . Làm việc với XML-document  Khai báo Dataset . Cú pháp: New System.Data.Dataset() . Hoặc New system.Data.DataSet( ) với : tên của DataSet . Cách khác: Ta có thể dùng công cụ DataSet trong hộp thoại ToolBox 48 http:// lhu.edu.vn
  49. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p VVíí ddụụ:: TTạạoo đđốốii ttưượợngng DataSetDataSet 49 http:// lhu.edu.vn
  50. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p DataSetDataSet  Các thuộc tính của DataSet: . DataSetName: Tên của DataSet (đọc ghi) . HasErrors: giá trị cho biết lỗi xảy ra trên 01 trong các bảng của DataSet: True/False ( chỉ đọc) . Relations: tập hợp các quan hệ(DataRelation) một nhiều của Dataset ( chỉ đọc) . Tables: Tập hợp các bảng (DataTable) của DataSet (chỉ đọc) 50 http:// lhu.edu.vn
  51. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p CCáácc phphươươngng ththứứcc ccủủaa DatasetDataset  Thêm một bảng vào Dataset . Muốn đưa 01 bảng DataTable vào Dataset, chúng ta dùng phương thức Add của tập hợp Tables: . Cú pháp: • Tables.Add(): bảng được tạo có tên table1, table2, • Tables.Add( ): 01 bảng mới được tạo thành trong Dataset có tên là  Chú ý: tên bảng có phân biệt chữ hoa, chữ thường 51 http:// lhu.edu.vn
  52. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p CCáácc phphươươngng ththứứcc ccủủaa DatasetDataset  Xóa bảng ra khỏi dataset: . Tables.Remove( ): xóa bảng ra khỏi tập hợp Table . Xóa bảng có chỉ số là ra khỏi tập hợp Tables: Tables.RemoveAt( ) . Xóa tất cả các bảng ra khỏi danh sách: Tables.Clear()  Lệnh kiểm tra Bảng có thể xóa hay không? : . Tables.CanRemove( ): • Trả về True: có thể xóa • False: không thể xóa vì đang xử dụng 52 http:// lhu.edu.vn
  53. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p CCáácc phphươươngng ththứứcc ccủủaa DatasetDataset  Kiểm tra bảng có thuộc về Dataset hay không ? . Tables.Contains( )  Xóa bỏ mọi dữ liệu trên Dataset . Clear()  Xóa bỏ Dataset . Disponse 53 http:// lhu.edu.vn
  54. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p CCáácc phphươươngng ththứứcc ccủủaa DatasetDataset Để tạo 01 quan hệ giữa hai bảng trong DataSet: Chúng ta sử dụng cú pháp Add của tập hợp Relation trong Dataset với các cú pháp sau: Relations.Add( , , ) Relations.Add( , , , ) 54 http:// lhu.edu.vn
  55. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p CCáácc phphươươngng ththứứcc ccủủaa DatasetDataset Xóa quan hệ khỏi DataSet: ta dùng phương thức sau: Relations.Remove( ) Xóa quan hệ ra khỏi tập hợp Relations của Dataset Relations.Remove( ) Xóa quan hệ ra khỏi tập hợp Relations của Dataset Kiểm tra quan hệ có xóa được hay không ? Relations.CanRemove( ) Trả về True: có thể xóa, False: không thể xóa 55 http:// lhu.edu.vn
  56. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p DataAdapterDataAdapter  Lấy cấu trúc và dữ liệu của các bảng trong nguồn dữ liệu về cho DataSet và cập nhật các thay đổi về nguồn dữ liệu gốc 56 http:// lhu.edu.vn
  57. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p DataAdapterDataAdapter  DataAdapter là một bộ gồm bốn đối tượng Command: . SelectCommand: cho phép lấy thông tin từ nguồn dữ liệu về . InsertCommand: cho phép chèn thêm dữ liệu vào bảng trong nguồn dữ liệu . UpdateCommand: cho phép sửa đổi dữ liệu trog nguồn dữ liệu nguồn . DeleteCommand: cho phép hủy bỏ dữ liệu trên bảng trong nguồn dữ liệu  Ta cầ hiểu rõ nội dung lệnh truy vấ cho SelectCommand, nội dung các đối tượng còn lại có thể sử dụng đối tượng thích hợp để tự động phát sinh hay chỉ rõ lệnh cho từng đối tượng 57 http:// lhu.edu.vn
  58. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p DataAdapterDataAdapter 58 http:// lhu.edu.vn
  59. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p DataAdapterDataAdapter  TableMappings 59 http:// lhu.edu.vn
  60. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p DataAdapterDataAdapter  TableMappings 60 http:// lhu.edu.vn
  61. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p TTạạoo DataAdapterDataAdapter 61 http:// lhu.edu.vn
  62. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p CCáácc chchứứcc nnăăngng ccủủaa DataAdapterDataAdapter  Lấy dữ liệu từ nguồn về cho DataSet, DataTable qua method Fill 62 http:// lhu.edu.vn
  63. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p CCáácc chchứứcc nnăăngng ccủủaa DataAdapterDataAdapter  Lấy cấu trúc dữ liệu từ nguồn 63 http:// lhu.edu.vn
  64. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p CCáácc chchứứcc nnăăngng ccủủaa DataAdapterDataAdapter  Tạo bộ lệnh cập nhật cho DataAdapter 64 http:// lhu.edu.vn
  65. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p DataTableDataTable  Dữ liệu các bảng trong nguồn dữ liệu được lấy về và đưa vào các DataTable. DataTable thuộc tên miền: . System.Data.DataTable . Cách khác: Dim Bang_x as New DataTable . Cách khác: Dim bang_x as New DataTable(<tên bảng) 65 http:// lhu.edu.vn
  66. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p DataTableDataTable –– TTậậpp hhợợpp RowsRows  Rows là tập hợp các dòng dữ liệu của bảng vì vậy mọi tham chiếu đến dòng đều thông qua tập hợp này  Các chức năng chính của Rows: . Rows.Count . Rows.Item( ) hoặc Rows( ) . Rows.Item( , ) hoặc • a Rows( , ) • aRows( , ) . Thêm dòng vào bảng • Dim NewRow As DataRow • NewRow = .NewRow() • .Rows.Add( ) . Rows.Add( ) . Rows.Remove ( ), Rows.RemoveAt( ) . Rows.Clear() 66 http:// lhu.edu.vn
  67. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p DataTableDataTable –– TTậậpp hhợợpp ColumnColumn  Tương tự như Rows, Columns là tập hợp các cột dữ liệu của bảng vì vậy mọi tham chiếu đến cột đều thông qua tập hợp này . Columns.Count . Columns.Item( ) . Columns.Item( ) . Columns( ) . Columns( ) 67 http:// lhu.edu.vn
  68. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p DataViewDataView  Cung cấp các phương pháp thuận tiện cho việc liên kết dữ lịêu với các điều khiển, sắp xếp,  Tạo DataView . New DataView() . New DataView( ) . New DataView( , , , )  Ví dụ: 68 http:// lhu.edu.vn
  69. Ts. Vũ̃ Đứ́ c Lung – Ks. Huỳ̀ nh Cao Tuấ́ n - Ks. Phan Hữ̃ u Tiế́ p CCáácc thuthuộộcc ttíínhnh ccủủaa DataViewDataView AllowDelete cho phép thao tác xóa dòng trên DataView AllowEdit Cho phép thao tác sửa đổi trên DataView AllowNew Cho phép thao tác thêm mới bằng AddNew Count Số mẩu tin trên DataView Item Trả về dòng dữ liệu trên bảng theo tham số truyền vào RowFilter Biểu thức lọc RowStateFilter Trạng thái dòng dữ liệu trên DataView + Added: dòng mới thêm nhưng chưa cập nhật +CurrentRows: tất cả các dòng không thay đổi, mới và đã thay đổi + Deleted: dòng đánh dấu hủy + ModifiedCurrent + ModifiedOriginal + None, OriginalRows,Unchanged Sort sắp xếp dữ liệu trên DataView Table Tên bảng 69 http:// lhu.edu.vn
  70. www.themegallery.com 70 LHULHU