ODBC(Open Database Conectivity)即開放式數(shù)據(jù)庫(kù)互聯(lián),作為Windows開放性結(jié)構(gòu)的一個(gè)重要部分已經(jīng)為很多的Windows程序員所熟悉,ODBC的工作依賴于數(shù)據(jù)庫(kù)制造商提供的驅(qū)動(dòng)程序,使用ODBC API的時(shí)候,Windows的ODBC管理程序,把數(shù)據(jù)庫(kù)訪問(wèn)的請(qǐng)求傳遞給正確的驅(qū)動(dòng)程序,驅(qū)動(dòng)程序再使用SQL語(yǔ)句指示DBMS完成數(shù)據(jù)庫(kù)訪問(wèn)工作。
一般來(lái)說(shuō),實(shí)現(xiàn)數(shù)據(jù)庫(kù)到ODBC驅(qū)動(dòng)程序管理器的注冊(cè)有以下兩種方法:一是編程時(shí)手工配置ODBC數(shù)據(jù)源,發(fā)布時(shí)使用InstallShield等安裝制作軟件自動(dòng)配置ODBC數(shù)據(jù)源;二是考慮用程序替用戶完成這些配置工作,實(shí)現(xiàn)的方法有幾種,一種辦法是用程序修改Windows注冊(cè)表,程序員可以用Windows API函數(shù)增改HKEY_LOCAL_MACHINE\Software\ODBC\ODBC.INI中的鍵值,這種方法比較煩瑣,另一種是在程序中使用ODBC API的方法,程序員可以在任何時(shí)候都可以用Visual C++編寫的程序調(diào)用這些API函數(shù)來(lái)設(shè)置ODBC數(shù)據(jù)源。創(chuàng)建ODBC數(shù)據(jù)源可以調(diào)用Windows系統(tǒng)子目錄下的動(dòng)態(tài)鏈接庫(kù)ODBCCP32.DLL中的函數(shù)SQLConfigDataSource(),該函數(shù)可以動(dòng)態(tài)地增加、修改和刪除數(shù)據(jù)源。SQLConfigDataSource()的原型如下:BOOL SQLConfigDataSource(HWND hwndParent, UINT fRequest, LPCSTR IpszDriver, LPCSTR IpszAttributes);其中四個(gè)參數(shù)的用法如下:●參數(shù)hwndPwent是父級(jí)窗口句柄。如果句柄為NULL,將不會(huì)顯示一些有關(guān)的對(duì)話框。如果參數(shù) IpszAttributes提供的信息不夠完善,在創(chuàng)建過(guò)程中就會(huì)出現(xiàn)對(duì)話框要求用戶提供相應(yīng)信息。●參數(shù)fRequest可以設(shè)置為下面的數(shù)值之一:ODBC_ADD_DSN: 增加_個(gè)新數(shù)據(jù)源ODBC_CONHG_DSN: 配置(修改)一個(gè)已經(jīng)存在的數(shù)據(jù)源ODBC_REMOVE_DSN: 刪除一個(gè)已經(jīng)存在的數(shù)據(jù)源ODBC_ADD_SYS_DSN: 增加一個(gè)新的系統(tǒng)數(shù)據(jù)源ODBC_CONFIG_SYS_DSN: 更改一個(gè)已經(jīng)存在的系統(tǒng)數(shù)據(jù)源ODBC_REMOVE_SYS_DSN: 刪除一個(gè)已經(jīng)存在的系統(tǒng)數(shù)據(jù)源●參數(shù)lpszDriver是數(shù)據(jù)庫(kù)引擎名稱,可以參見ODBC管理器中對(duì)ODBC驅(qū)動(dòng)程序的描述。比如要加載的是Excel數(shù)據(jù)庫(kù),那么數(shù)據(jù)庫(kù)引擎名稱就為Microsoft Excel Driver(*.xls)●參數(shù)lpszAttributes為一連串的"KeyName=value"字符串,每?jī)蓚€(gè)KeyName值之間用\0""字符隔開(或者\(yùn)0隔開即可)。KeyName主要是新數(shù)據(jù)源缺省的驅(qū)動(dòng)程序注冊(cè)說(shuō)明,其中最主要的關(guān)鍵字是"DSN"(新數(shù)據(jù)源的名稱)和"DBQ"(數(shù)據(jù)源的地址),其余關(guān)鍵字則根據(jù)不同的數(shù)據(jù)源有不同要求。關(guān)于lpszAttributes參數(shù)的具體設(shè)置,詳細(xì)可以參考Windows系統(tǒng)目錄下幫助文件Odbcjtn.hlp主題目錄標(biāo)簽中的"ODBC API函數(shù)改變|SQLConfigDatasource"條目。SqlConfigDataSource的應(yīng)用條件:使用SqlConfigDataSource函數(shù)之前,必須把ODBCINST.H文件包含在工程頭文件中,將ODBCCP32.LIB加入工程,同時(shí)保證ODBCCP32.DLL運(yùn)行時(shí)處于系統(tǒng)子目錄下。若使用VC6.0,在安裝目錄中的Lib文件夾下尋找ODBCCP32.LIB并添加到工程中;若使用的是VC2005,貌似安裝目錄的lib文件夾下沒(méi)有該lib文件,只能使用VC6.0下的......例: