Bài 5 Lập trình thực thi các hoạt động xử lý theo cơ chế ngắt kết nối (Disconnected) - Công nghệ ADO.NET với C#


Mô hình dữ liệu ngắt kết nối (disconnected model) Cho phép người dùng kết nối đến CSDL, đọc và lưu trữ dữ liệu vào vùng nhớ, sau đó ngắt kết nối. Có thể thực hiện các cập nhật trên vùng nhớ này và ghi trở lại CSDL


Nội dung

  1. Mô hình dữ liệu ngắt kết nối ADO.NET là gì?
  2. Tiến trình đọc (Loading) và ghi (Saving) dữ liệu của DataSet
  3. DataView là gì?

1. Mô hình ngắt kết nối là gì?

  • Mô hình dữ liệu kết nối và ngắt kết nối
  • Tạo các đối tượng DataSet và DataTable
  • Tạo các DataColumn của DataTable
  • Khai báo các ràng buộc (constraint) và các quan hệ (relation) của các DataTable
  • Cập nhật dữ liệu cho DataTable

Mô hình kết nối và ngắt kết nối

  • Mô hình dữ liệu kết nối (connected model)
    • Cho phép người dùng mở và duy trì kết nối đến CSDL để thực hiện lệnh
    • Sử dụng đối tượng Connection và Command
  • Mô hình dữ liệu ngắt kết nối (disconnected model)
    • Cho phép người dùng kết nối đến CSDL, đọc và lưu trữ dữ liệu vào vùng nhớ, sau đó ngắt kết nối. Có thể thực hiện các cập nhật trên vùng nhớ này và ghi trở lại CSDL
    • Sử dụng đối tượng Connection và DataAdapter

the ado net disconnected model uses dataset

Tạo DataSet và DataTable

  • DataSet là gì?
    • Là một CSDL thu nhỏ đặt trong vùng nhớ DataSet chứa các DataTable, DataRelation
    • Thuộc tính Tables chứa các DataTable của DataSet
    • Thuộc tính Relations chứa các DataRelation của DataSet
  • Tạo DataSet
    • Khởi tạo một DataSet
    • Khởi tạo các DataTable và sử dụng phương thức Add

Khai báo và khởi tạo

//Tạo DataSet
DataSet du_lieu = new DataSet("QLSV");

//Tạo DataTable
DataTable bang = new DataTable("SV");

//Thêm DataTable vào DataSet
du_lieu.Tables.Add(bang);

Tạo các DataColumn của DataTable

  • Đối tượng DataColumn
    • Là các cột của DataTable
    • Thuộc tính Columns chứa các DataColumn của DataTable
  • Các thuộc tính của DataColumn
    • Tên (name)
    • Kiểu dữ liệu (data type)
    • Kích thước (size)

Khai báo và khởi tạo đối tượng DataColumn

//Tạo DataColumn
DataColumn cotTenKH = new DataColumn("TenKH",Type.GetType("System.String"));
cotTenKH.MaxLength = 50;

//Thêm DataColumn vào DataTable
bang.Columns.Add(cotTenKH);

Đối tượng DataColumn

  • Chỉ đọc: thuộc tính ReadOnly
  • Không được Null: thuộc tính AllowDBNull
  • Duy nhất: thuộc tính Unique
  • Cột tăng tự động
    • Thuộc tính AutoIncrement
    • Thuộc tính AutoIncrementSeed
    • Thuộc tính AutoIncrementStep
  • Cột đóng vai trò là biểu thức

Khai báo Constraint và Relation

  • Constraint là các kiểm tra ràng buộc trên DataTable
    • Có hai loại: UniqueConstraint và ForeignKeyConstraint
    • Thuộc tính Constraints chứa các Constraint của DataTable
  • Relation là quan hệ giữa hai DataTable
    • Tạo DataRelation gồm Tên quan hệ, các cột bảng cha, các cột của bảng con
    • Thuộc tính Relations chứa các DataRelation của DataSet

Cập nhật dữ liệu cho DataTable

  • DataRow
    • Là một dòng trong DataTable
    • Thuộc tính Rows chứa các DataRow của DataTable
  • Cập nhật Thêm
    • Tạo một DataRow
    • Sử dụng phương thức Add để thêm DataRow vào DataTable

Khai báo và khởi tạo đối tượng DataRow

//Tạo DataRow
DataRow dong = bang.NewRow();
dong[0] = …;

//Thêm DataRow vào DataTable
bang.Rows.Add(dong);

Cập nhật dữ liệu cho DataTable

  • Cập nhật Xóa
    • Sử dụng phương thức Remove để xóa hẳn một DataRow ra khỏi DataTable
    • Sử dụng phương thức Delete để đánh dấu xóa một DataRow trong DataTable
  • Ghi và không ghi các thay đổi trong DataTable
    • Sử dụng phương thức AcceptChanges để ghi
    • Sử dụng phương thức RejectChanges để không ghi

2. Tiến trình đọc và ghi dữ liệu của DataSet

  • Khai báo và khởi tạo đối tượng DataAdapter
  • Sử dụng đối tượng DataAdapter để đọc và ghi dữ liệu

read write dataadapter ado.net

Các DataAdapter trong .NET

  • System.Data.SqlClient.SqlDataAdapter
  • System.Data.OleDbClient.OleDbDataAdapter
  • System.Data.Odbc.OdbcDataAdapter
  • System.Data.OracleClient.OracleDataAdapter

Khai báo và khởi tạo DataAdapter

  • DataAdapter dùng để đọc dữ liệu từ CSDL và lưu trữ trong các DataTable của DataSet
  • Trước khi đọc thì Connection tự động mở ra và sau khi đọc xong thi Connection tự động đóng lại
  • DataAdapter sử dụng các Command sau
    • Select Command
    • Insert Command
    • Update Command
    • Delete Command
//Tạo DataAdapter
string lenh = "Select * From …";
SqlDataAdapter bo_doc_ghi = new SqlDataAdapter(lenh, ket_noi);

//Đọc dữ liệu
DataSet du_lieu = new DataSet();
bo_doc_ghi.Fill(du_lieu);

 Sử dụng DataAdapter để ghi

  • Sử dụng phương thức Update
  • Trước khi Update thì các Insert Command, Update Command, Delete Command của DataAdapter phải khai báo các câu lệnh thích hợp
  • Có thể sử dụng đối tượng SqlCommandBuilder để xây dựng tự động các Command này

Phương thức Update

//Cập nhật các thay đổi trên DataSet về cơ sở dữ liệu
bo_doc_ghi.Update(du_lieu);
du_lieu.AcceptChanges();

//Cập nhật các thay đổi trên DataTable về cơ sở dữ liệu
bo_doc_ghi.Update(bang);
bang.AcceptChanges();

3. DataView là gì?

  • Nếu DataTable được dùng lưu trữ dữ liệu thì DataView được dùng hiển thị dữ liệu
  • DataView cho phép lọc và sắp xếp dữ liệu của DataTable
  • Một DataTable có thể có nhiều DataView
  • Một DataTable luôn có một Default View

dataview là gì

Khai báo và khởi tạo DataView

//Khai báo và khởi tạo DataView
DataView dv = new DataView(bang);

//Tham chiếu đến DataView mặc định
DataView dv = bang.DefaultView;

Sử dụng DataView

  • Để sắp xếp dữ liệu => thuộc tính Sort
  • Để lọc dữ liệu theo điều kiện => thuộc tính RowFilter
  • Để lọc dữ liệu theo trạng thái dòng => thuộc tính RowStateFilter
  • Để tìm kiếm => phương thức Find và FindRows

Chia sẽ bài viết :