TỔNG QUÁT VỀ ADO

Một phần của tài liệu Microsoft Access 2000 Lập trình ứng dụng cơ sở dữ liệu. Tập 1 (Trang 113 - 126)

Access 2000 hỗ trợ cho phiên bản 2.1 của ADO, gồm ba mô

hình truy cập dữ liệu ADO: thư viện ADODB, thư viện ADOX, và thư viện JRO. Bằng cách phân đoạn truy cập dữ liệu vào ba thư viện, Access đưa ra một footprint (khoảng vừa đủ) nhỏ hơn đến các trình ứng dụng không yêu cầu cả ba thư viện. Thành phần chính khác của chiến lược truy cập dữ liệu Access 2000 là dựa vào nhà cung cap OLE DB, lam việc với ADO để có thể truy cập đến nguồn dữ liệu truyền thống như là các nguồn mới, các thư mục e-mail.

Điều này mở rộng khả năng to lớn về lập trình cơ sở dữ liệu.

1 Logie: Mét hệ thống hoặc một tập quy tắc để định nghĩa sự uận hành của may tính

105

Chương 2: CÁC MÔ HÌNH TRUY CAP DU LIEU

Thư viện ADODB là thư viện nhỏ, tâm thường chứa các đối tượng cốt lõi và đưa ra các sở để tạo kết nối, cung cấp các câu lệnh, tìm lại các recordset và còn cho phép điều khiển recordset. Ban cũng có thể sử dụng nó để thực hiện các tác vụ bảo trì cơ bản như

chỉnh sửa, thêm vào, và xóa các record. Việc thiết kế không phân

cấp của thư viện tạo sự đễ dàng cho người mới bắt đầu học.

Thư viện ADOX hỗ trợ ngôn ngữ định nghĩa dữ liệu và vấn đề an toàn. Nó đưa ra các đối tượng giúp cho bạn tiếp cận với sơ đồ tổng thể của cơ sở dữ liệu. Ví dụ, nó cho phép bạn tạo các bảng và các mối quan hệ. Mô hình có sự hỗ trợ cho tính toàn vẹn quy chiếu, phân cấp cập nhật và xóa, hỗ trợ các thủ tục và sự quan sát cũng như các tập hợp sers va Groups dé bao toàn cơ sở dữ liệu ở mức người dùng (user-level database security).

Thư vién JRO cho phép mô phỏng cơ sở dữ liệu Jet. Access 2000 hỗ trợ mô phỏng cơ sở dữ liệu với cả hai cơ sở đữ liệu Jet và SQL Server. Chương 11 trình bày chi tiết về mô phỏng cơ sở dữ liệu.

Một lợi điểm quan trọng do ADO cung cấp là mô hình sự kiện. ODBCDriect cho phép các thao tác không đồng thời, nhưng ADO cung cấp các sự kiện. Điều này giải phóng một trình ứng dụng ra khỏi kiểm tra vòng một đối tượng và kiểm tra thuộc tính StlllExecutng của nó. Để thay thế, bạn có thể tạo bộ phận điều khiển sự kiện để đáp ứng cho các sự kiện mỗi khi chúng xảy ra. ( Các chương tiếp theo sẽ giải thích cách thiết kế các bộ điều khiển sự kiện).

Các nhà cung cấp OLE DB giúp đỡ để tạo khả năng mạnh mẽ của ADO, họ để nghị một phương pháp mới để truy cập dữ liệu từ xa, đó là đón nhận (embrace) và mở rộng (extand) ODBC, họ còn cung cấp phương pháp truy cập đến cả hai nguồn cơ sở dữ liệu liên hệ và không truyền thống với giao diện ADO không thay đổi. Các

Chương 2: CÁC MÔ HÌNH TRUY CẬP DỮ LIỆU

ship? của Access 2000 với nhiều thứ khác do các nhà cung cấp sản phẩm OLE DB cung cấp cho gồm Jet, SQL Server, Oracle va cac nguồn dữ liệu ODBC phổ biến, các nguồn không truyền thống như Microsoft Active Directory Service vA Microsoft Index Server. Bạn có thể hy vọng nhiều vào các nhà cung cấp này trong thời gian tới.

Trước khi sử dụng bất kỳ thư viện nào của ADO, bạn phải tạo một tham chiếu đến ít nhất một trong số đó. Bạn thực hiện việc

này từ cửa sổ Visual Basic Editor (VBE) dùng lệnh Tool-References.

Hình 9-3 trình bày hộp thoại References có ba thư viện đã chọn.

Ce 7Á cái t...o0u0 6a ¿lLsiLoaibiilaiioibdin30ioll0RNNNI

Avatable References: .

tp

Visual Basic For Apphcations + Cancel

~ Microsoft Access 9.0 Object Library

¥. OLE Autord ston

2 LEAT Men Rowse...

¥ Microsoft ADO Ext. 2.1 for ODL and Securty

v Microsoft Jet Repheation Objects 1.0 Lbrary 4]

:ðcwakb

“Microsoft Access Wizard Contict teary Prionty

“ puerasoft DAO 3.6 Object Ltrary He’

“Active Setup Cortral Library 3|

: Áctivelovie control type kÙy at

“ActiveX Conference Control

| Cache Prelooder

‘ CCrsWeo 1.0 Tyoe Library Na

4 | a

Microsoft ActiveX Data Objects 2.0 Ubrary

Location: C:\PROGRAM FILES\COMMON FILES|SYSTEMIADOWISADO IS,

Language: Standard

Hình 2-3. Bạn dùng hộp thoai References để thêm các thư viện ADO vào một trình ứng dụng.

Mặc dù có nhiều thuận lợi để chọn cả ba, nhưng để bảo vệ nguên tài nguyên, bạn chỉ nên chọn những thư viện nào bạn cần.

Hãy thử với các chọn lựa cho trình ứng dụng của bạn và các máy

? Ship: Tòi liệu hoặc phụ kiện gửi đi cùng uới sản phẩm từ nơi sẵn xuất.

107

cho chúng chạy nhằm xác định điều gì tạo ra khả năng đánh giá trong môi trường của bạn. Nếu bạn có một trình ứng dụng sản phẩm chạy trong nhiều kiểu máy khác nhau, bạn phải bảo vệ các nguồn tài nguyên cho các yêu cầu của trình ứng dụng khác.

Thư Viện ADODB

Thư viện đối tượng ADODB có bảy đối tượng chính. Trong đó bốn đối tượng có các tập hợp. Đối tượng Connection xuất hiện ở trên cùng của phân cấp, nhưng bạn có thể tạo các kết nối ngầm để sử dụng cho các đối tượng khác. Các đối tugng Connection, Command, Recordset va Field đều có các tập hợp Properties.

Collection KEY

Object

Parameter

Properties

Hình 2-4. Thư viện đối tượng ADODB

B] Chương 2: CÁC MÔ HÌNH TRUY CAP DU LIEU

Đối Tượng Conneciion

Đối tượng Connection thiết lập Hên kết đến một cơ sở dữ liệu.

Bạn luôn luôn sử dụng đối tượng Conneection hoặc ngấm ngầm hoặc rõ ràng khi bạn làm việc với một cơ sở dữ liệu. Khi bạn tạo một đối tượng rõ ràng, bạn có thể quản lý có hiệu quả một hoặc nhiều kết nối và qui định lại các vai trò mà chúng đáp ứng trong một trình ứng dụng. Qua việc tạo một đối tượng ngầm bạn có thể thu ngắn đoạn chương trình của bạn. Mỗi đối tượng mới do bạn tạo với một kết nối ngầm tiêu thụ nhiều tài nguyên hơn. Nếu trình ứng dụng của bạn chỉ có một hoặc hai đối tượng mà mỗi đối tượng đòi hỏi kết nối riêng, các kết nối ngầm đáp ứng nhu cầu của bạn tốt nhất. ADO cho phép bạn chọn cách để tạo và quản lý các kết nối khi bạn thấy

thích hợp.

Không giống như DAO, ADO là một ngôn ngữ truy cập dữ liệu phổ thông, vì thế không phải tất cả các thuộc tính và phương pháp đều thích hợp cho phương tiện Jet. Tuy nhiên, nhà cung cấp OLE DB cung cấp đặc biệt cho Jet 4, đó là phiên bản mới nhất về các ship của Jet đi kèm với Access 2000. Vì các đối tượng ConnecHon phụ thuộc vào quy cách kỹ thuật của nhà cung cấp nên khả năng để thiết lập một tham số ConnecHion tham chiếu đến nhà cung cấp Jet 4 là có giá trị. Nhà cung cấp khách hàng này cho phép ADO phan ánh nhiều điểm mạnh đặc biệt do Jet cung cấp. Khi bạn tham chiếu đến một cơ sở dữ liệu trong file khác, bạn phải đưa vào tham số DataSource dé dinh diém cho vj tri vat ly cha một cơ sở dữ liệu khi nó không nằm trong đề án hiện hành.

Một đoạn chương trình mẫu đơn giản sau đây m7 cơ sở dữ liệu Northwind quen thuộc. Chú ý rằng một câu lệnh 7n khai báo

và tạo một tham chiếu đến cnwuNorthuind như là một đối tượng Connection. Si dung phương pháp Open vao cnnNorthwind lam cho cơ sở dữ liệu có thể thực hiện phần còn lại của thủ tục. Chú ý rằng cdc tham s6 Provider va Data Source xuất hiện bên trong một cặp dấu ngoặc kép (“”). Tham số Prouider chỉ đến nhà cung cấp Jet 4 109

Chương 2: CÁC MÔ HÌNH TRUY CẬP DỮ LIỆU

OLE DB va tham số Data Source chỉ đến vị trí vật lý của cơ sở dữ

liệu Northwind.

Sub OpenMyDB()

Dim cnnNorthwind As New Connection Dim rsCustomers As Recordset ' Tạo mối quan hệ.

cnnNorthwind.Open “Provider = Microsoft.Jet.OLEDB.4.0 ;" &_

“Data Source= C:\Program Files\Microsoft Office\OfficeV' &_

“Samples\Northwind.mdb ;”

' Tạo tham chiếu đến các recordset và cài đặt các thuộc tính.

Set rsCustomers = New ADODB.Recordset rsCustomers.CursorTyoe = adOpenKeyset rsCustomers.LockType = adLockOptimistic

‘MG cac recordset va in mét record dé kiểm tra.

rsCustomers.Open “Customers”, cnnNorthwind, , , adCmdTable Debug.Printrs Customers.Fields(0). Value, rsCustomers.Fields(1).Value rsCustomers.Close

cnnNorthwind.Close End Sub

Sau khi tạo một tham chiếu đến kết nối này, đoạn chương trình tạo đối tượng Recordset. Nó thiết lập một tham chiếu đến biến của đối tượng biểu hiện recordset và kế đó nó ấn định các giá trị của cặp thuộc tinh cho recordset. Khéi cuối cùng của đoạn chương trình mở recordset và in một cặp field từ record đầu tiên.

Phương pháp Open cho đối tượng ?ecordset có thể tham chiếu mối kết nối tới cơ sở đữ liệu và một vài nguồn record trong cơ sở dữ liệu. Đoạn chương trình trên chọn tất cả các record từ bảng Cusfomers trong cơ sở dữ liệu Northwind. Phương pHáp Open khiến cho record thứ nhất ngay từ đầu đã có thể sử dụng vào trình ứng dụng.

Chương 2: CAC MO HINH TRUY CAP DU LIEU

Hai dòng cuối trong khối (block) cuối cùng của đoạn chương trình đóng recordset và kết nối. Việc đóng kết nối khiến cho tất cả các đối tượng tham chiếu đến nó, như đối tượng Recordset không vận hành được. Bất kỳ mọi cố gắng nào để thiết lập các thuộc tính và gọi các phương pháp cho một recordset để tham chiếu một kết nối đã bị đóng đều sinh lỗi run-time. Cũng vì lý do này, nên việc tạo một kết nối ngầm là một lựa chọn tốt hơn bởi vì đối tượng có sử dụng kết nối cho sự tổn tại của nó.

Đoạn chương trình dưới đây cũng mở một recordset dựa trên bảng Customers trong cd sở đữ liệu Northwind và in record đầu tiên. Đoạn chương trình này ngắn gọn và ít phức tạp hơn bởi vì nó tạo một kết nối ngầm và chấp nhận các cài đặt mặc định.

Sub OpenFast()

Dim rsCustomers As Recordset

Set reCustomers = New ADODB. Recordset

' Đoạn mã ít hơn, nhưng khả năng dùng tài nguyên lớn hơn.

rsCustomers.Open‘customers”, _

“Provider=Microsoft Jet.OLEDB.4.0;" &_

“Data Source= C:\Program Files\Microsoft Office\OfficeV' &_

Samples\Northwind.mdb a

Debug.Print rsCustomers.Fields(0), rsCustomers.Fields(1) RsCustomers.Close

End Sub

Vì không có kết nối rõ ràng nên thủ tục OpenFast khéng can phải khai báo một đối tượng kết nối (và vì thế nó không mở hoặc đóng kết nối). Như ban da biết, phương pháp Open cho một đối tượng recordset có thể gồm thông tin kết nối cẩn thiết của nhà cung cấp và nguồn dữ liệu. Đoạn chương trình ở trên chỉ có một tham số khác là nguồn cho recordset, dé la bang Customers.

Phương pháp Open dựa vào các cài đặt CursorType và LockType mặc định, đó là: respectively (tách biệt), forward-only (chỉ hướng về trước) và read-only (chỉ đọc). Các cài đặt này cung cấp cho các thao 111

tác rất nhanh, nhưng chúng k không đưa ra nhiều chức năng. Tuy nhiên, nếu chúng phù hợp với nhu cầu của bạn và cho phép bạn chuyển hướng chú ý đến các khía cạnh khác của sự phát triển trình ứng dụng, chúng phải được chọn lọc kỹ càng nhất,

Thuộc Tính Mode

Theo mặc định, phương pháp Open của đối tượng Connection tạo một cơ sở dữ liệu cho truy cập phân chia (shared access). Tuy nhiên, bạn có thể thiết lập thuộc tính Mode của đối tượng Connection đến bất kỳ cài đặt nào trong bảy cài đặt chấp nhận các mức độ khác nhau về truy cập tới cơ sở dữ liệu. Các cài đặt theo chế độ này liên quan tới tất cả các recordset và các câu lệnh gán một

kết nối vào thuộc tinh ActiveConnection của chúng. Đoạn chương trình dưới đây trình bày sự tác động của cài đặt theo chế độ read- only về khả năng cập nhật mét recordset.

Sub OpenLookOnly()

Dim cnni As New Connection Dim rsCustomers As Recordset

‘ cnni.Mode = adModeRead

cnn1.Open “Provider=Microft.Jet.OLEDB.4.0 ;" &_

“Data Source=C:\Program Files\Microsoft Office\Office\” &_

“Samples\Northwind.mdb ;"

Set rsCustomers = New ADODB.Recordset

rsCustomers.Open “Customers”, cnn1, adOpenKeyset, _ adLockPessimistic

' Một cài đặt adModeread đến cnn1.Mode là nguyên nhân gây ra lỗi trong thủ lục này.

‘Di chuyển ghi chú từ dòng cnn1.Mode để thấy lỗi ở đây.

rsCustomers.Fields(“CustomerlD") = “XXXXX”

rsCustomers.Updata

Debug.Print rsCustomers.Fields(“CustomerID) End Sub

Thu tue OpenLookOnly khai báo một đối tượng Connection mới trong đòng đầu tiên. Ở dòng thứ ba, nếu không có ghi chú, 112

Chương 2: CÁC MÔ HÌNH TRUY CẬP DỮ LIỆU

thiết lập thuộc tớnh Mfode của kết nối đến ứdModeRead cho truy cập read-only. Có it nhat hai ddng trong thu tuc, ở đó có thể dùng phương phap Open dé tao bién recordset rsCustomers. Cap dong tiếp theo cố gắng cập nhật gid tri cia field CustomerID cho record đầu tiên. Nếu bạn di chuyển ghi chú trong dòng thứ ba cho các cập nhật này sẽ gây ra lỗi vì bạn không thể cập nhật cơ sở dữ liệu ở chế độ read-only.

Bảng sau đây mô tả tám hằng số bạn có thể sử dụng để thiết lập thuộc tính Mode của kết nối. Bạn có thể sử dụng các hằng số này để điều khiển kiểu chỉnh sửa mà một hoặc nhiều người sử dụng có thể thực hiện qua kết nối đến một cơ sở dữ liệu.

CÁC HÀNG Số ĐƯỢC SỬ DỤNG ĐỂ THIẾT LẬP THUỘC TÍNH MODE CỦA ĐỐI TƯỢNG CONNECTION

_—— Hằngsg GA _Hanhvi

AdModeUnknown 0 Cho phép không thiết lập

ne _ hoặc được xác định rõ. _

AdModeRead _ Chọ phép chỉ đọc... ———-

_AdModeWrite — 3. ——— _Cho phóp chỉ gh. __—_..—

_AdModeReadWrite 3 Chophópdeeghi. — _

AdModeShareDenyRead 4 Ngăn cần người khác mở nguồn record với chế độ cho

a phép đọc. _

AdModeShareDeny Write 8 Ngăn cần người khác mở nguồn record với chế độ cho

- _ php ght, ————————

AdModeShareExclusive 12 Ngăn cần người khác mở kết

a i ơ....ễ

AdModeShareDenyNone 16 Truy cập phân chia (mặc định).

113

Phương pháp OpenSchema

Phương pháp OpenSehema của đối tượng Connection cho phép một trình ứng dụng duyệt qua các đối tượng trong các tập hợp có sẵn thông qua kết nối không liệt kê các phan tir trong danh sách.

Xuất ra từ phương pháp OpenSehema có thể là thông tin về các bảng, view, procedure, Index, v.v... Các chỉ tiết cụ thể phụ thuộc vào cách cung cấp khả năng của các công cụ về phương pháp của nhà cung cấp OLE DB. Đoạn chương trình dưới đây sử dụng phương pháp OpenSchema với nhà cung cấp Jet 4 để liệt kê các view (khung quan sát) có thể có được thông qua một kết nối.

Public Sub OpenSchemax()

Dim cnnt As New ADODB.Connection Dim rstSchema As ADODB.Recordset

Cnn1.Open “Provider=Microsoft.Jet.OLEDB.4.0 BL

“Data Source=C:\Program Files\Microsoft Office\Office\" &

“Samples\Northwind.mdb ;"

Set rstSchema = cnnt -OpenSchema(adSchemaTables)

“ln các view; liêu chuẩn chọn lựa khác gồm

‘ TABLE, ACCESS TABLE va SYSTEM TABLE.

Do Until rstSchema.EOF

If rstSchema.Fields(“TABLE_TYPE") = “VIEW” Then Debug.Print “View name: “ &_

rstSchema.Fields(“TABLE_NAME ”) & vbCr End If

rstSchema.MoveNext Loop

rstSchema.Close cenn1.Close End Sub

Thủ tục bắt đầu bằng việc khai báo một kết nối và một recordset. Recordset giit lai kết quả xuất ra từ phương pháp OpenSchema. Tham số cho phương pháp OpenSchema chỉ định các

Chương 2: CÁC MÔ HÌNH TRUY CẬP DỮ LIỆU

phần tử của miền Table cho sơ đỗ cơ sở dữ liệu sẽ tạo các mục nhập trong các record. Tuy nhiên, phương pháp OpenSchema theo dõi một vài kiểu của các bảng gồm các view, các bảng người sử dụng thông thường, các bảng hệ thống đặc biệt, bảng khác của các đối tượng Access, và các bảng liên kết. Đoạn chương trình ở trên m kết quả từ phương pháp cho các view.

Déi tudng Recordset

Một tập hợp các record 1a mot cấu trúc chương trình để làm việc với các record. Bạn có thể dựa vào các record trên một bảng hoặc một view Lrong để ỏn hiện hành hoặc trờn fủle khỏc, một cõu lệnh SQL, hoặc một câu lệnh trả về các hàng. Những gì bạn có thể thực hiện được với một recordset tùy thuộc vào nhà cung cấp OLE DB và các thuộc tính nguồn dữ liệu gốc.

Trong khi bạn có thể tách các recordset để sử đụng cho các đối tượng khác, như các quan hệ và các câu lệnh, thì sự hòa trộn tiêu chuẩn Œrich mix) của đối tượng itecordsef về các thuộc tính và các phương pháp tạo sự chọn lựa tự nhiên để xử lý tập hợp hàng (row-set processing). Bạn có thể dùng recordset để thực hiện các tác động phức tạp dựa vào một tập hợp các dòng: Bạn có thể di chuyển giữa các hàng; In tất cả hoặc một vài nội dung của chúng; thêm, sửa đổi, và xóa các record; tìm kiếm các record; lọc các record để chọn một hoặc bất kỳ tập con nào từ một các recordset đây đủ. Các recordset đã có nguồn gốc lịch sử từ các đối tượng không ổn định, thông thường chúng chỉ tên tại vào thời gian được mở trong chương trình. Phiên bản 2.10 về các shíp của ADO có trong Access 2000 dưa vào các recordset ổn định, bạn có thể ghi vào đĩa để sau này mở lại.

Thuộc tính ActiveConneciion

Thuéc tinh AetiveConnection của một recordset cho phép trìni:

ứng dụng của bạn gõ nhịp (tap) vào một kết nối mở để hỗ trợ cho một recordset. Bạn có thể thiết lập thuộc tính này bất kỳ lúc nào 115

Một phần của tài liệu Microsoft Access 2000 Lập trình ứng dụng cơ sở dữ liệu. Tập 1 (Trang 113 - 126)

Tải bản đầy đủ (PDF)

(383 trang)