摘要:應用程序訪問數據庫通常可以使用兩種方法,一種是使用ODBC數據管理器注冊一個數據源,另一種方法是使用ODBC API訪問數據庫。當然這僅僅是與數據連接的方法,與數據建立連接后,通常是使用ADO控件來訪問和操作數據庫。
關鍵詞:數據庫 數據庫連接 ADO ODBC
筆者在多年的教學工作中發現,很多學生在數據庫系統開發的過程中很難實現應用程序與數據庫的連接,所以在此把應用程序與數據庫的連接方法作一個總結,以期對讀者有所幫助。
應用程序要訪問一個數據庫通常可以使用兩種方法:一種方法是用控制面板中的ODBC管理器注冊一個數據源名,管理器根據數據源名提供的數據庫位置、數據庫類型及ODBC驅動程序等信息,建立起ODBC與具體數據庫的聯系;另外一種方法是通過ODBC API來訪問數據庫,當然ODBC API并不能直接訪問數據庫,它必須通過驅動程序管理器與數據庫交換信息,驅動程序管理器負責將應用程序對ODBC API的調用傳遞給正確的驅動程序,而驅動程序在執行完相應的操作后,將結果通過驅動程序管理器返回給應用程序。
用ODBC管理器注冊數據源名時最重要的是配置DSN(應用程序用以請求一個連接到ODBC數據源的連接的名字)。有三種類型的DSN:系統DSN、用戶DSN和文件DSN。系統DSN可以被登錄到系統的所有用戶使用;用戶DSN是為具體的用戶建立的,它只能被建立它的用戶使用;文件DSN是用于文件的DSN,它與系統DSN的區別在于存放位置的不同,系統DSN是存放在ODBC的存儲區中的,而文件DSN是存放在文件中的。在ODBC管理器中配置DSN的具體方法步驟在此就不再贅述,在很多教材上都有詳細的配置過程可以參考。
當通過ODBC管理器把數據源名建立好后,就可以在應用程序中使用控件來訪問數據庫并對其進行操作。在很多開發工具中都是使用ADO控件來訪問數據庫的。ADO是微軟公司提供的一種數據庫訪問技術。它被設計用來同數據訪問層OLE DB Provider一起工作,以提供通用數據訪問能力。OLE DB是一個底層的數據訪問接口,用它可以訪問各種數據源。ADO提供了如下三個組件:
Microsoft ActiveX Data Objects (ADO):使客戶端應用程序能通過OLE DB提供者訪問和操作數據庫中的數據。
ActiveX Data Objects Extensions for DDL and Security(ADOX):將ADO擴展為包括創建、修改和刪除的模式對象,如表格和過程及管理對象權限的安全對象等。
ActiveX Data Objects (Multidimensional) (ADO MD):將ADO擴展為包括指定到多維數據的對象,并允許瀏覽多維模式、查詢立方和檢索結果。
ADO的連接方式主要可分為OLE DB Privder方式與OLE DB Provider for ODBC方式。ODBC Provider允許ADO連接到任何ODBC數據源。ODBC驅動程序對于當今使用的各種主要DBMS都有效,包括SQL Server、Access、FoxPro,以及諸如Oracle等非微軟數據庫產品。提供者不受線程控制,允許使用通用代碼(Unicode),并支持事務。
ADO控件與數據庫的連接需要使用連接對象Connection,其屬性ConnectionString可讀寫String類型,提供數據提供者或服務提供者打開到數據源的連接所需要的特定信息,包括Provider、Driver、Server、Database、DSN、UID、PWD或者Provider、Data Source、User、Password、Initial Catalog等。
Provider指定OLE DB數據或服務提供者的名稱,也可以缺省。一般有數據提供者、服務提供者和服務組件三種形式的提供者。數據提供者擁有自己的數據并將數據以表的格式顯示給應用程序。服務提供者將服務封裝,使ADO應用程序中的功能得以擴大。服務提供者也可以進一步定義為服務組件,服務組件必須連同其他服務提供者或組件一起工作。
Driver表示ODBC驅動程序的名稱,并不是ODBC驅動程序動態鏈接庫(DLL)的文件名。
Server是指數據庫服務器的名稱。
Database指定服務器上的數據庫名稱。即使DSN定義已經指定了數據庫,也可以在DSN之外指定Database參數以便連接到不同的數據庫。
DSN是指用戶在ODBC管理器中建立的DSN的名稱。
UID為ODBC數據源指定用戶標識。
PWD為ODBC數據源指定用戶口令,必須有足夠的權限。
應用程序使用ADO控件訪問數據庫就是通過Connection對象的以上屬性編程實現的,常見的方法(以sql server為例)可總結如下:
用系統dsn:connstr=″DSN=dsnname;UID=xx;PWD=xxx;DATABASE=dbname″
用文件dsn:connstr=″FILEDSN=xx;UID=xx;PWD=xxx;DATABASE=dbname″
還可以用連接字符串:connstr=″DRIVER={SQL SERVER};SERVER=servername;UID=xx;PWD=xxx″
參考文獻:
[1]童愛紅編著.Visual Basic數據庫編程.清華大學出版社,北京交通大學出版社,2004.6.