Giáo trình

Sử dụng ADO.Net

Science and Technology

Sử dụng ADO.Net

Mục tiêu của bài:

  • Sử dụng được các lớp trong thư viện ADO.NET để thao tác CSDL
  • Mô tả được chức năng và cách thức sử dụng các lớp DataSet, Datatable, Datarow để đọc dữ liệu.
  • Đọc dữ liệu với DataReader và hiển thị trên các lớp kế thừa từ Listbox, DataGridview.
  • Cập nhật dữ liệu với Dataset và DataAdapter

Nội dung

Thao tác CSDL với DataConnection, DataCommand, DataReader

Để thao tác trực tiếp (Gồm Select , Insert, Delete và Update) với bảng CSDL, có thể dùng một trong 3 phương thức của đối tượng DataCommand.

  • cmd.ExecuteReader() : Thực hiện câu lệnh Select và trả về một DataReader
  • cmd.ExecuteScalar() : Thực hiện câu lệnh mà kết quả trả về chỉ có 1 ô (Ví dụ câu lệnh Select Count(*)…; ).
  • cmd.ExecuteNonQuery() : Thực hiện câu lệnh OLEDB nhưng không trả về kết quả (Delete, Update, Insert, Exec Sp_, …)

Thêm bản ghi vào bảng CSDL

Ví dụ: Tạo form để thêm bản ghi vào trong bảng Customers.

*** Lưu ý khi thêm bản ghi:

  • Nếu trường nào thuộc kiểu Text (hoặc Char) thì trước khi thêm cần đặt vào trong cặp dấu nháy đơn ‘ ‘.
  • Trong trường hợp bản thân dữ liệu cần thêm chứa dấu nháy đơn thì cần thay nó bằng 2 dấu nháy đơn. (Sử dụng hàm Replace để thay).

Đọc dữ liệu với DataReader

- DataReader có thể đọc dữ liệu từ CSDL để sau đó ta có thể nạp vào các điều khiển khác.

- Ví dụ 1

*** Tương tự cho Combobox

- Ví dụ 2: Xây dựng lớp clsDataGridView, thừa kế từ lớp DataGridView nhưng lớp mới có thêm phương thức :

Public Sub NapDuLieu(Tên_Bảng As String, TênTệpCSDL As String)

Sửa đổi bản ghi trong bảng CSDL

Xóa bản ghi trong bảng CSDL

Thao tác dữ liệu theo mô hình phi kết nối

Lớp DataSet

- Dataset là một lớp dùng để thao tác với dữ liệu theo mô hình dữ liệu phi kết nối. Nó được coi như là một kho chứa các bảng (table). Người dùng có thể thay đổi dữ liệu trong các bảng này và khi thực sự muốn cập nhật vào Cơ sở dữ liệu thì DataSet sẽ thực hiện cập nhật thông qua lớp DataAdapter.

- Các bảng trong DataSet có thể do DataAdapter Fill vào hoặc cũng có thể là các bảng được tạo thành từ lớp DataTable.

- Các bảng này được quản lý bởi tập hợp Tables của lớp DataSet.

- Ví dụ 1 : Thêm một bảng vào Dataset và đặt tên cho bảng đó là KhachHang

Dim da As OleDbDataAdapter

Dim ds As New DataSet

da = New OleDbDataAdapter("Select * From…", "Provider…")

da.Fill(ds, "KhachHang" )

  • Ví dụ 2: Thêm một bảng (đối tượng DataTable) vào DataSet.

 Sau khi đã thêm vào DataSet theo một trong 2 cách ở trên thì sau đó ta có thể lấy các bảng này ra và hiển thị trên các DataGridView như vẫn làm trước đây :

Lớp DataTable

- Dùng để lưu một bảng dữ liệu, tương đương với một bảng nằm trong DataSet. Mỗi bảng này có thể chứ nhiều dòng (DataRow), mỗi dòng bao gồm một hoặc nhiều cột (DataColumn).

- DataTable thường được dùng để thao tác cùng với DataSet trong việc đọc cũng như cập nhật vào CSDL.

- Có thể tạo một DataTable như sau:

Dim dt As New DataTable( "Tên_Bảng” )

- Sau khi tạo xong, cần tiếp tục chỉ ra là bảng này có mấy cột (trường) và kiểu của mỗi trường như sau:

dt.Columns.Add( "MaKH" , Type.GetType( “System.String” ))

dt.Columns.Add( "TenKH" , Type.GetType( “System.String” ))

- DataTable này cũng có thể được thêm vào một DataSet có sẵn, ví dụ thêm vào ds:

ds.Tables.Add (dt)

- Một đối tượng DataTable cũng có thể dùng để tham chiếu đến một Table nằm trong dataSet, ví dụ : cho dataTable tên là dt Tham chiếu đến một bảng của dataset ds như sau:

Dim dt As DataTable

Dt = ds.Tables(“KhachHang”)

??? Tại sao không khai báo là Dim dt As New DataTable !

Muốn truy xuất đến từng hàng (bản ghi) của DataTable, có thể thông qua tập hợp Rows của DataTable. Ví dụ: dt.Rows(0) để truy xuất đến hàng đầu tiên. Còn muốn truy xuất đến một ô (có hàng i, cột j) thì viết : dt.Rows(i)(j), hoặc dt.Rows(i)(“Tên_Cột”).

**Lưu ý: Có thể đặt khóa chính cho DataTable thông qua thuộc tính PrimaryKey.

Lớp DataRow (Dòng dữ liệu)

- Mỗi đối tượng thuộc lớp DataRow sẽ ứng (tương đương) với một hàng trong DataTable. DataRow thường được dùng để thêm vào một bản ghi (hàng) trong DataTable hoặc để tham chiếu và thao tác với một hàng trong DataTable.

Ví dụ tổng hợp:

Tạo một chương trình để hiển thị trên màn hình một bảng có dạng như sau:

Bước 1: Kéo một DataGridview vào form

Bước 2: Tạo một DataTable và điền 2 bản ghi vào trong đó

+ Tạo DataTable có 2 trường là MaKH và TenKH cùng có kiểu String

+ Thêm vào 2 bản ghi (KH01, Lớp TK3H) và (KH02, TK1) bằng phương thức Add của tập hợp Rows của đối tượng DataTable, kết hợp với DataRow.

Bước 3: Tạo một DataSet và thêm DataTable ở trên vào.

Bước 4: Gắn kết DataSet với DataGridView để hiển thị.

Listing chương trình:

*** Lưu ý:

  • Có thể thao tác với các hàng của DataGridView thông qua tập hợp DataGridView.Rows.
  • Thao tác với các ô (Cell) trong mỗi hàng đó thông qua tập hợp Cells, ví dụ: DataGridView.Rows(0).Cells(0) để tham chiếu đến ô ở hàng đầu tiên và cột đầu tiên.

Cập nhật dữ liệu thực sự thông qua đối tượng DataSet

Khi thao tác với DataSet (ví dụ sửa đổi) thì đó chỉ là tạm thời, không được cập nhật ngay vào Cơ sở dữ liệu thực sự. Trong trường hợp ta muốn cập nhật trở lại CSDL thì gọi qua các phương thức Update của đối tượng DataAdapter.

Ví dụ

Đánh giá:
0 dựa trên 0 đánh giá
Nội dung cùng tác giả
 
Nội dung tương tự