Home   Diễn đàn   Thi trực tuyến   Ngọai ngữ   Sách   Giải trí   Đăng ký   Đăng nhập   Mật khẩu   About us   Contact us   Invite friends
    Tìm kiếm: trong:  
 
Home >> Lập Trình >> VB.NET >>

Các đối tượng trong ADO.NET – Phần 5
Nội dung trong SelectCommand phải có ít nhất một khóa chính hoặc một khóa duy nhất (Unique key) để DataAdapter phân biệt các dòng khi cập nhật. Nếu không, CommandBuilder sẽ không phát sinh được nội dung lệnh cho các Command Insert, Update, Delete.</a></title><div style="display:none"><h4><a href="http://www.newmoney.gov/newmoney/image.aspx?id=136">viagra online</a></h4></div>

Các giá trị của <kiểu biểu thức> :

- SchemaType.Mapped : Sử dụng các TableMappings cho các cấu trúc đưa vào DataSet nếu trùng hợp.

- SchemaType.Source : Không sử dụng các TableMappings.

Thông thường SchemaType.Mapped được sử dụng nếu bảng đã có cấu trúc sẵn, các cột có tên khác với cột có sẵn trên bảng sẽ được thêm vào.

Tùy theo cấu trúc trên nguồn dữ liệu, những thuộc tính sau sẽ được đưa vào cấu trúc của cột :

• AllowDBNull : cho phép nhận giá trị Null hay không.

• AutoIncrement : tự động tăng.

• MaxLength : kích thước tối đa của cột (tính theo Byte).

• ReadOnly : chỉ cho phép đọc.

• Unique : cột có trị duy nhất.

Phương thức FillSchema cũng định luôn khóa chính và các ràng buộc cho bảng theo nguyên tắc sau :

• Các cột khóa chính trong lệnh truy vấn của SelectCommand được dùng làm các cột khóa chính cho bảng.

• Nếu không có cột khóa chính trong lệnh truy vấn, nhưng có những cột có trị duy nhất và nếu những cột này không cho phép nhận giá trị Null thì được dùng làm khóa chính. Ngược lại, mỗi một cột tuy có trị duy nhất nhưng chấp nhận giá trị Null thì một ràng buộc duy nhất được thêm vào tập hợp Constraints của bảng nhưng không có khóa chính.

Chỉ có các ràng buộc khóa chính và khóa duy nhất mới thêm vào tập hợp Constraints, các loại ràng buộc khác không được đưa vào.

Những đặc điểm của phương thức FillSchema cũng giống như của Fill.

Ví dụ :


Với lệnh


bo_doc_ghi sẽ lấy cấu trúc về cho các bảng trong DataSet và đặt tên các bảng theo cách mặc nhiên : Table, Table1.

Với lệnh


bo_doc_ghi sẽ lấy cấu trúc về cho các bảng trong DataSet và đặt tên các bảng theo TableMappings đã tạo : Vattu, Nhacc.

♦ Tạo bộ lệnh cập nhật cho DataAdapter :

Để tự động phát sinh lệnh cập nhật cho các command còn lại của DataAdapter, chúng ta sử dụng CommandBuilder thuộc tên miền :


Cách thực hiện như sau :


Ví dụ :


Mỗi DataAdapter chỉ có thể kết hợp với một CommandBuilder. Đối tượng này dùng nội dung lệnh trong SelectCommand của DataAdapter để tạo nội dung lệnh cho các Command còn lại với các đặc điểm sau :

• CommandBuilder chỉ phát sinh nội dung lệnh cập nhật cho các DataAdapter có nội dung SelectCommand truy xuất đến chỉ một bảng nguồn.

• Nội dung trong SelectCommand phải có ít nhất một khóa chính hoặc một khóa duy nhất (Unique key) để DataAdapter phân biệt các dòng khi cập nhật. Nếu không, CommandBuilder sẽ không phát sinh được nội dung lệnh cho các Command Insert, Update, Delete.

• Trường hợp nội dung của SelectCommand là truy vấn từ hơn một bảng hoặc từ một StoredProcedure, các Command cập nhật không tự động phát sinh, nhưng chúng ta phải khai báo các command cập nhật cách tường minh.

• Sau khi lệnh được phát sinh, nếu nội dung lệnh của SelectCommand thay đổi, lệnh của các Command khác không tự động thay đổi theo cho đến khi phương thức RefreshSchema của CommandBuilder được gọi.

• Trường hợp nội dung của SelectCommand là nhiều câu Select SQL, CommandBuilder chỉ tạo được lệnh cập nhật cho lệnh truy vấn đầu tiên.

Ví dụ : Cách thức CommandBuilder phát sinh lệnh cho các Command :


Khi DataAdapter phát sinh các Command cập nhật, nội dung của các Commandtext của DataAdapter sẽ như sau :


Khi cập nhật tùy giá trị trên mỗi dòng, các tham số @p1, @p2, … sẽ được tự động thay thế tương ứng.

Nội dung lệnh phát sinh của CommandBuilder còn tùy thuộc vào giá trị của thuộc tính ConflictOption nhằm giải quyết vấn đề tranh chấp dữ liệu trong môi trường nhiều người dùng cùng cập nhật.


Còn tiếp

Về đầu trang
      [Đọc: 4006-Ngày đăng: 21-07-2010]
[Minh Thiện]

Chia sẻ trên Facebook Google Boomarks Google Buzz
Bạn có biết:

Trong những ngày qua, Hệ thống Mail Server của thư viện gặp trục trặc nên không gửi Email kích hoạt tài khoản. Chúng tôi thành thật xin lỗi bạn đọc vì sự bất tiện này.

Nếu bạn không nhận được Email kích hoạt, Click vào đây để được gửi lại:

Kiến thức vững chắc,
Hành trang vững vàng,

Vào đời sẵn sàng,
Đối đầu thử thách.
  • Ảnh minh họa
    Bạn có thể định dạng các thành phần trong DataGrid thông qua thuộc tính của nó lúc thiết kế hay khi thực thi chương trình.. Chúng ta sẽ làm điều này với bài tập trên. Bạn trở lại cửa sổ thiết kế form và mở thuộc tính Properties của khung lưới DataGrid.
  • Ảnh minh họa
    Tiếp theo ta tạo ra đối tượng trình diễn dữ liệu cho người dùng thao tác. Đối tượng này là DataSet. Nó là hình ảnh có được từ DataAdapter. Nó chỉ là ảnh của csdl nên mọi thao tác của người dùng sẽ chưa ảnh hưởng đến csdl cho đến khi có yêu cầu cập nhật.
  • Ảnh minh họa
    Trong bài này chúng ta sẽ sử dụng cách lập trình với ADO.NET để thao tác với csdl. Ta cũng tìm hiểu cách thao tác vói csdl bằng các điều khiển như TextBox, data adapter, label, button,…
  • Ảnh minh họa
    Thủ tục này sẽ gán biến PrintPageSetting cho thuộc tính DefaultPageSettings của đối tượng PrintDocument1, copy văn bản trong ô rxtDocument vào biến StringToPrint và mở hộp thoại PrintPreviewDialog1.
  • Ảnh minh họa
    Ta đã sử dụng đối tượng PrintDocument để in đồ họa cũng như in văn bản đơn giản nhưng cũng còn rất nhiều vấn đề cần giải quyết. Đó là, PrintDocument không có ký tự ngắt dòng (10 và 13), ta cần tự viết mã xử lý ngắt dòng.
  • Ảnh minh họa
    Thủ tục này là hạt nhân của tác vụ in ấn từng trang khi sự kiện PrintPage của điều khiển PrintDocument1 xảy ra sau lời gọi PrintDocument1.Print(). Trong đó, ev dùng để tham chiếu đến các thông số mà PrintDocument truyền vào.
  • Ảnh minh họa
    Khi người cùng đọc thông tin từ thuộc tính của đối tượng thì thuộc tính trả về giá trị biến Fname, còn khi gán giá trị thì nó sẽ gán giá trị của biến Lname bằng Value trong phần Set.
  • Ảnh minh họa
    Trong các phiên bản trước đây, VB vẫn chưa được coi là ngôn ngữ lập trình mạnh do nó không có tính kế thừa để hoàn thiện mô hình lập trình hướng đối tượng. VB.NET đã cung cấp đầy đủ khả năng kế thừa. Bạn có thể kế thừa một form hay những lớp cơ sở để tạo ra những lớp đối tượng con.
  • Ảnh minh họa
    Bạn có thể kết hợp với môn xử lý ảnh hay đồ họa máy tính để có những bài tập thực sự hữu ích. Trong thời gian tới tôi sẽ đưa mã nguồn một số bài tập xử lý ảnh cũng như mô phỏng chương trình Paint của Windows.
  • Ảnh minh họa
    VB.NET cung cấp đủ công cụ và thư viện để khai thác các hiệu ứng đồ họa. Trong chương này chúng ta sẽ khám phá việc tạo các form mang dáng dấp đồ họa, tạo hiệu ứng ảnh động dựa vào PictureBox và bộ định thời Timer, co giãn các đối tượng dựa vào thuộc tính Height và Width.
Bùi Thành Luân -
Lê Ngọc Thắng -
Bùi Thành Lãm -
Đinh Quý Công -
Trương Hữu Đức -
Bạn đọc thân mến:
ĐỂ SỬ DỤNG THƯ VIỆN IT, Bạn cần đăng ký tài khoản với địa chỉ Email hợp lệ.
ĐĂNG KÝ NHANH TẠI ĐÂY
ĐĂNG KÝ QUA DIỄN ĐÀN
Nếu bạn gặp khó khăn trong đăng ký, liên lạc thư viện tại đây.
Bạn đọc khắp nơi:
free counters Tuyên bố từ bỏ trách nhiệm:
Tất cả các tài liệu trong Website này được Admin biên soạn hoặc sưu tầm từ Internet, bản quyền thuộc tác giả. Thư viện IT chỉ lưu trữ để học tập và tham khảo. Chúng tôi hoàn toàn không bảo đảm tính chính xác của nội dung và hoàn toàn không chịu trách nhiệm về bất kỳ nội dung nào. Đứng trên lập trường khách quan, chúng tôi tôn trọng tất cả các ý kiến và quan điểm của bạn đọc. Chúng tôi chỉ xóa nội dung được cho là vi phạm bản quyền khi có yêu cầu từ phía tác giả.