對于 ADO 或 RDS 的程序員來說,理想的環(huán)境是每個數(shù)據(jù)源都具有一個 OLE DB 接口,以便 ADO 可以直接調(diào)用該數(shù)據(jù)源。雖然越來越多數(shù)據(jù)庫廠商提供 OLE DB 接口,但某些數(shù)據(jù)源仍無法以這種方式提供。然而,當前使用的所有 DBMS 系統(tǒng)實際上都可以通過 ODBC 進行訪問。
Microsoft? ODBC Provider 允許 ADO 連接到任何 ODBC 的數(shù)據(jù)源。ODBC 驅(qū)動程序?qū)τ诋斀袷褂玫母鞣N主要 DBMS 都有效,包括 Microsoft? SQL Server?、Microsoft Access(Microsoft Jet 數(shù)據(jù)庫引擎)和 Microsoft FoxPro? 以及諸如 Oracle 等非 Microsoft 數(shù)據(jù)庫產(chǎn)品。提供者將不受線程控制并允許使用 unicode。
提供者將支持事務,盡管不同的 DBMS 引擎提供不同類型的事務支持。例如,Microsoft Access 支持五級或五級以下的嵌套事務。
該提供者是 ADO 的默認提供者,當與 Microsoft SQL Server 6.5 一起使用時,除 ADO 語言手冊主題中注釋之外,所有依賴于提供者的 ADO 屬性和方法都受到支持。
連接字符串參數(shù)
要連接該提供者,將(ConnectionString 屬性的參數(shù))“Provider=”設置為:
MSDASQL
讀取 Provider 屬性也將返回該字符串。
由于這是 ADO 的默認提供者,所以如果省略連接字符串的 Provider= 參數(shù),ADO 將試圖建立與該提供者的連接。
除了 ADO 所定義的參數(shù)外,提供者不支持任何特定連接參數(shù)。但是,提供者將把任何非 ADO 連接參數(shù)傳遞給 ODBC 驅(qū)動程序管理器。
由于可以省略 Provider 參數(shù),因此使用與撰寫 ODBC 連接字符串時用的相同參數(shù)名(DRIVER=、DATABASE=、DSN= 等等)、值和語法,可以撰寫與同一數(shù)據(jù)源的 ODBC 連接字符串相同的 ADO 連接字符串??梢允褂没虿皇褂妙A定義的數(shù)據(jù)源名 (DSN) 或 FileDSN 進行連接。
帶有 DSN 或 FileDSN 的語法:
"[Provider=MSDASQL;] { DSN=name | FileDSN=filename } ; [DATABASE=database;] UID=user; PWD=password"
無 DSN(非 DSN 連接)的語法:
"[Provider=MSDASQL;] DRIVER=driver; SERVER=server; DATABASE=database; UID=user; PWD=password"
如果使用 DSN 或 FileDSN,則必須通過“Windows 控制面板”中的“ODBC 管理器”進行定義。作為設置 DSN 的替換方法,可以指定 ODBC 的驅(qū)動程序 (DRIVER=),諸如“SQLServer”、服務器名 (SERVER=) 和數(shù)據(jù)庫名 (DATABASE=)。
也可以在特定 ODBC 的參數(shù)或標準 ADO 定義的 User ID 和 Password 參數(shù)中為用戶帳號 (PWD=) 指定用戶帳號名 (UID=) 和密碼。如果這些值中同時包括了 ADO 和特定 ODBC 的參數(shù),則 ADO 參數(shù)優(yōu)先。
即使 DSN 定義已經(jīng)指定了數(shù)據(jù)庫,也可以在 DSN 之外指定 DATABASE 參數(shù)以便連接到不同的數(shù)據(jù)庫。這同時更改了 DSN 定義以包括指定的數(shù)據(jù)庫。使用 DSN 時始終包括 DATABASE 參數(shù)是一種好辦法。這樣將保證能連接到正確的數(shù)據(jù)庫,因為其他用戶可能會在上一次檢查 DSN 定義后更改默認的數(shù)據(jù)庫參數(shù)。
Command 文本
如何使用 Command 對象很大程度上取決于數(shù)據(jù)源和它所接受的查詢類型或命令語句。
ODBC 對于調(diào)用存儲的過程提供特定的語法。對于 Command 對象的 CommandText 屬性、Connection 對象上 Execute 方法的 CommandText 參數(shù)、或 Recordset 對象上 Open 方法的 Source 參數(shù),請傳遞下列語法的字符串:
"{ [ ? = ] call procedure [ ( ? [, ? [ , _ ]] ) ] }"
此處每個 ? 引用 Parameters 集合中的一個對象。第一個 ? 引用 Parameters(0),下一個 ? 引用 Parameters(1),依次類推。
參數(shù)引用是可選的并取決于存儲過程的結構。如果要調(diào)用未定義參數(shù)的存儲過程,則字符串如下:
"{ call procedure }"
如果有兩個查詢參數(shù),則字符串如下:
"{ call procedure ( ?, ? ) }"
如果存儲過程要返回一個值,返回值將被作為另一個參數(shù)來對待。如果無查詢參數(shù)而有返回值,則字符串如下:
"{ ? = call procedure }"
最后,如果有返回值和兩個查詢參數(shù),則字符串如下:
"{ ? = call procedure ( ?, ? ) }"
Recordset 行為
下表列出了由該提供者打開的 Recordset 對象上可用的標準 ADO 方法和屬性。
要獲得有關提供者配置的 Recordset 行為的詳細信息,請運行 Supports 方法并枚舉 Recordset 的 Properties 集合以確定特定提供者的動態(tài)屬性是否存在。
標準 ADO Recordset 屬性的可用性:
屬性 |
僅向前 |
動態(tài) |
鍵集 |
靜態(tài) |
AbsolutePage |
不可用 |
不可用 |
讀/寫 |
讀/寫 |
AbsolutePosition |
不可用 |
不可用 |
讀/寫 |
讀/寫 |
ActiveConnection |
讀/寫 |
讀/寫 |
讀/寫 |
讀/寫 |
BOF |
只讀 |
只讀 |
只讀 |
只讀 |
Bookmark |
不可用 |
不可用 |
讀/寫 |
讀/寫 |
CacheSize |
讀/寫 |
讀/寫 |
讀/寫 |
讀/寫 |
CursorLocation |
讀/寫 |
讀/寫 |
讀/寫 |
讀/寫 |
CursorType |
讀/寫 |
讀/寫 |
讀/寫 |
讀/寫 |
EditMode |
只讀 |
只讀 |
只讀 |
只讀 |
EOF |
只讀 |
只讀 |
只讀 |
只讀 |
Filter |
讀/寫 |
讀/寫 |
讀/寫 |
讀/寫 |
LockType |
讀/寫 |
讀/寫 |
讀/寫 |
讀/寫 |
MarshalOptions |
讀/寫 |
讀/寫 |
讀/寫 |
讀/寫 |
MaxRecords |
讀/寫 |
讀/寫 |
讀/寫 |
讀/寫 |
PageCount |
不可用 |
不可用 |
只讀 |
只讀 |
PageSize |
讀/寫 |
讀/寫 |
讀/寫 |
讀/寫 |
RecordCount |
不可用 |
不可用 |
只讀 |
只讀 |
Source |
讀/寫 |
讀/寫 |
讀/寫 |
讀/寫 |
State |
只讀 |
只讀 |
只讀 |
只讀 |
Status |
只讀 |
只讀 |
只讀 |
只讀 |
當 ADO 與 ODBC 的 Microsoft OLE DB Provider 1.0 版本一起使用時,AbsolutePosition 和 AbsolutePage 屬性是只寫的。
標準 ADO Recordset 方法的可用性:
方法 |
僅向前 |
動態(tài) |
鍵集 |
靜態(tài) |
AddNew |
是 |
是 |
是 |
是 |
Cancel |
||||
CancelBatch |
是 |
是 |
是 |
是 |
CancelUpdate |
是 |
是 |
是 |
是 |
Clone |
否 |
否 |
是 |
是 |
Close |
是 |
是 |
是 |
是 |
Delete |
是 |
是 |
是 |
是 |
GetRows |
是 |
是 |
是 |
是 |
Move |
是 |
是 |
是 |
是 |
MoveFirst |
是 |
是 |
是 |
是 |
MoveLast |
否 |
是 |
是 |
是 |
MoveNext |
是 |
是 |
是 |
是 |
MovePrevious |
否 |
是 |
是 |
是 |
NextRecordset* |
是 |
是 |
是 |
是 |
Open |
是 |
是 |
是 |
是 |
Requery |
是 |
是 |
是 |
是 |
Resync |
否 |
否 |
是 |
是 |
Supports |
是 |
是 |
是 |
是 |
Update |
是 |
是 |
是 |
是 |
UpdateBatch |
是 |
是 |
是 |
是 |
*不支持 Microsoft Access 數(shù)據(jù)庫。
參閱 有關 ODBC 的 Microsoft OLE DB Provider 的詳細實現(xiàn)資料和功能信息,請查閱 ODBC 的 Microsoft OLE DB Provider 文檔和《Microsoft OLE DB 程序員手冊》,可以在 Data Access SDK 中得到。也可查閱 http://www.microsoft.com/data 處的數(shù)據(jù)訪問 Web 頁。