0
Tải bản đầy đủ (.doc) (49 trang)

Cơ sở dữ liệu nhiều người dùng (Multiuser Database s)

Một phần của tài liệu TRUY NHẬP CƠ SỞ DỮ LIỆU TRONG VISUAL BASIC.DOC (Trang 47 -49 )

 Đối với một ứng dụng về cơ sở dữ liệu, thường xảy ra vấn đề cùng một thời điểm nhiều người dùng thực hiện những thao tác đọc, thêm xóa hay sửa chữa dữ liệu, đòi hỏi chương trình phải xử lý thích hợp. Có nhiều cách để xử lý chẳng hạn điều khiển việc truy cập dữ liệu ( Controlling Data Access) hoặc dùng các cơ chế khóa (Locking).

1/ Điều khiển truy cập dữ liệu ( Controlling Data Access )

 Có thể thực hiện điều khiển bằng hai cách : dùng chương trình điều khiển (Programatic controls) hoặc dùng động cơ điều khiển dữ liệu (Database Engine controls).

 Sử dụng dữ liệu độc quyền (exclusively). Phương pháp này không cho thực hiện các thao tác : compacting, updating, thay đổi cấu trúc dữ liệu như thêm hay xoá trên cơ sở dữ liệu khi đã có một người nào đó sử dụng.

 Ví dụ : Dim db as Database

Set db = Opendatabase (“Nwind.mdb”,True,False)

 Ngăn cấm (Denying) một số thao tác, hay sử dụng độc quyền các recordset, thay vì cấm trên cả database, ta chỉ thực hiện trên recordset bằng việc cấm đọc hay cấm ghi.

 Ví dụ : Dim re as Recordset

Set re = db.OpenRecordset

(“Customers”,dbOpenTable,dbDenyRead) Hay Set re = db.OpenRecordset

(“Customers”,dbOpenTable,dbDenyWrite)

 Sử dụng bảng chỉ đọc (Read-Only tables) : chỉ cho phép thực hiện thao tác đọc trên bảng. Để thực hiện ta có thể dùng bảng kiểu snapshots hay mở bảng bằng cách :

Dim re as Recordset

Set re = db.OpenRecordset

(“Customsers”,dbOpenTable,dbReadOnly)

2/ Locking Database

 Jet engine không hổ trợ khóa ở mức độ từng record. Thực tế nó thực hiện việc khóa trên từng trang với độ lớn là 2 K (2048 bytes). Trong Visual Basic không có lệnh nào để thực hiện các thao tác này, việc khóa được thực hiện tự động khi các thao tác Add, Edit, Update được sử dụng.

Khóa bi quan (Pessimistic locking) : khóa trang khi phương pháp Edit được sử dụng, giải phóng khóa khi dùng phương pháp Update và dữ liệu đã được ghi.

Khóa lạc quan (Optimistic locking) : khóa trang khi phương pháp Update được sử dụng và giải phóng khóa ngay khi phương pháp Update hoàn thành.

 Phương pháp khóa bi quan là mặc nhiên, tuy nhiên để định lại ta có thể dùng thuộc tính LockEdits của bảng như sau :

Dim re as Recordset

Với khóa bi quan : re.LockEdits = True Với khóa lạc quan : re.LockEdits = False

Khóa sẽ tự động được giải phóng khi phương pháp Update hoàn tất. Tuy nhiên ta có thể tự giải phóng bằng cách dùng : DBEngine.Idle

Một phần của tài liệu TRUY NHẬP CƠ SỞ DỮ LIỆU TRONG VISUAL BASIC.DOC (Trang 47 -49 )

×