Huỳnh Văn Thâm

Một phần của tài liệu Bài giảng lập trình ADO NET sử dụng các wizard trong thiết kế huỳnh văn thâm (Trang 39 - 52)

DataReader

 Hỗ trợ truy cập dữ liệu nhanh, one-way, read-only.

 Chỉ đọc dữ liệu từ server từng dòng riêng rẽ nên không

tốn bộ nhớ.

 Chỉ được tạo thông qua phương pháp ExecuteReader của

đối tượng Command.

 Connection phải được mở trước khi gọi ExecuteReader  Phương pháp Close của DataReader phải luôn được gọi

khi DataReader không còn cần sử dụng để giải phóng Connection.

41

Các phương pháp và tính chất quan trọng

 GetSchemaTable

Trả về 1 DataTable mô tả lược đồ của tập mẩu tin kết quả truy vấn dữ liệu.

 Read

Dời sang mẩu tin kế tiếp trong tập kết quả.

 Close

Đóng đối tượng DataReader.

 NextResult

Chuyển sang tập mẩu tin kết quả kế tiếp (trường hợp DataReader chứa nhiều kết quả truy vấn).

 FieldCount

43

Phương thức ExecuteReader của Command

 Cú pháp: reader = command.ExcuteReader(t) t ∈ enum CommandBehavior  enum CommandBehavior CloseConnection SchemaOnly SingleResult SingleRow Vd: command.ExecuteReader(CommandBehavior.CloseConnecti on | CommandBehavior.SingleRow)

Truy cập DataReader với nhiều tập mẩu tin kết quả

String sql = “select * from HangHoa; select * from KhachHang”

SqlCommand command = new SqlCommand(sql,conn) conn.Open()

SqlDataReader reader = command.ExecuteReader();

do {

while (reader.Read()) {

45

Chương 6:

 DataAdapter làm việc với Dataset để cung cấp cơ chế truy (adsbygoogle = window.adsbygoogle || []).push({});

cập dữ liệu không giữ kết nối.

 Mô hình thừa kế của các lớp DataAdapter trong .Net

FrameWork : DataAdapter DbDataAdapter SqlDataAdapter OleDataAdapter OdbcDataAdapter

47

Phương thức Fill

 Sử dụng command SelectCommand để truy vấn dữ liệu,

kết quả trả về được điền vào DataSet. Vd:

Me.SqlSelectCommand1 = New System.Data.SqlClient.SqlCommand Me.SqlSelectCommand1.CommandText = "SELECT HH_MaHang, HH_TenHang, HH_SoLuong, HH_GiaNhap, HH_MaLoai FROM HANGHOA"

Me.SqlSelectCommand1.Connection = Me.SqlConnection1

Me.SqlDataAdapter1.SelectCommand = Me.SqlSelectCommand1 Dim ds as new DataSet(“Authors”)

Me.SqlDataAdapter1.Fill(ds,”Table1”)

 Phải mở và đóng Connection trước và sau khi thực hiện

Điền dữ liệu vào DataSet đã có sẵn Schema

 Xác định tính chất MissingSchemaAction của

DataAdapter :

DataAdapter.MissingSchemaAction = MissingSchemaAction.Add

Bổ sung mọi cột còn thiếu trong Schema

DataAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey

Bổ sung mọi cột còn thiếu trong Schema, cập nhật khóa chính

DataAdapter.MissingSchemaAction = MissingSchemaAction.Error

Phát sinh ngoại lệ (Exception) với từng cột bị thiếu

49

Phương thức FillSchema

 Schema : Lược đồ của tập dữ liệu, bao gồm cấu trúc và

quan hệ của các bảng dữ liệu.

Me.SqlSelectCommand1 = New System.Data.SqlClient.SqlCommand Me.SqlSelectCommand1.CommandText = "SELECT HH_MaHang, HH_TenHang, HH_SoLuong, HH_GiaNhap, HH_MaLoai FROM HANGHOA"

Me.SqlSelectCommand1.Connection = Me.SqlConnection1

Me.SqlDataAdapter1.SelectCommand = Me.SqlSelectCommand1 Dim ds as new DataSet(“Authors”)

Me.SqlDataAdapter1.FillSchema(ds, SchemaType.Source,”Table1”)

 enum SchemaType : (adsbygoogle = window.adsbygoogle || []).push({});

SchemaType.Source SchemaType.Mapping

 Khi có thao tác thay đổi dữ liệu trong một bảng của

DataSet, các dòng bị thay đổi sẽ được ghi nhận qua tính chất RowState.

 RowState nhận các giá trị :

DataRowState.Added

Cho biết dòng mới được thêm vào

DataRowState.Deleted

Cho biết dòng đã bị xóa

DataRowState.Detached

51

Phương thức Update

 Cập nhật dữ liệu từ DataSet vào cơ sở dữ liệu gốc.

 Nội dung hoạt động của Update: duyệt qua từng khoản tin

trong DataSet, phân tích giá trị RowState và gọi 1 trong 4

command tương ứng của DataAdapter : Select, Insert, Update và Delete.

 Command Select được định nghĩa ngay từ đầu khi tạo

DataAdapter, sử dụng để truy vấn dữ liệu và điền vào DataSet (có thể được định nghĩa tường minh, hoặc thông qua hàm dựng của DataAdapter).

 Các command Insert, Update, Delete sử dụng cho phương

thức Update, có thể được người sử dụng định nghĩa hoặc được phát sinh tự động bằng cách sử dụng CommandBuilder :

 Hạn chế khi sử dụng CommandBuilder :

Chỉ sử dụng cho DataAdapter kết nối đến 1 bảng dữ liệu. Bảng dữ liệu phải được chỉ định khóa chính.

 Định nghĩa các command Insert, Update, Delete cho

DataAdapter: tạo các command với CommandText có chuỗi SQL tương ứng, sử dụng các tham số cho các cột dữ liệu.

Một phần của tài liệu Bài giảng lập trình ADO NET sử dụng các wizard trong thiết kế huỳnh văn thâm (Trang 39 - 52)