搜尋許久未能找到動(dòng)態(tài)建立Informix的odbc連接文章,有建SQL Server的樣例,按其方法一試雖建起了連接名,但連接不成功,實(shí)在沒有辦法解決了,后來通過對(duì)注冊(cè)表信息的比對(duì)才發(fā)現(xiàn)其中默認(rèn)參數(shù)中帶有備注信息,使其參數(shù)失效了,以下代碼中“ConnectionString”直接賦值部分為會(huì)造成出錯(cuò)的默認(rèn)值,強(qiáng)行賦值后測(cè)試通過。此問題困擾了半天時(shí)間,現(xiàn)在終于解決,爽之有余,與大家分享。
*通過API動(dòng)態(tài)建立odbc
DECLARE INTEGER SQLConfigDataSource IN odbccp32 INTEGER, INTEGER, STRING, STRING
lnWindowHandle=0
lcODBCDriver='Informix-CLI 2.5 (32 bit)' &&DRIVER類型
lcODBCName='zzsj' &&數(shù)據(jù)源名字
lcODBCDesc='總賬數(shù)據(jù)庫(kù)' &&數(shù)據(jù)源描述
lcODBCServer='Informix' &&SSERVER名字
lcODBCDatabase='mis2' &&要連接的數(shù)據(jù)庫(kù)名字
lcSERV='zz_service' &&service
lcSRVR='ccbzz_fj' &&server
lcHost='11.12.13.45'
lcUID='123456'&&password
lcProtocol='onsoctcp'
lcReadOnly='No'
lcServerType='Informix 7.2'
ConnectionString ='DSN=' + lcODBCName + CHR(0) ;
+ 'Description=' + lcODBCDesc + CHR(0) ;
+ 'DB=' + lcODBCServer + CHR(0) ;
+ 'Host=' + lcHost + CHR(0) ;
+ 'SERV=' + lcSERV + CHR(0) ;
+ 'SRVR=' + lcSRVR + CHR(0) ;
+ 'UID=' + lcUID + CHR(0) ;
+ 'CursorBehavior=0' + CHR(0) ;
+ 'EnableScrollableCursors=0' + CHR(0) ;
+ 'GetDBListFromInformix=1' + CHR(0) ;
+ 'YieldProc=1' + CHR(0) ;
+ 'Protocol=' + lcProtocol + CHR(0) ;
+ 'Database=' + lcODBCDatabase + CHR(0)
**先試圖修改已有的ODBC,如果不存在,返回0。
lreturn=SQLConfigDataSource(lnWindowHandle, 2, lcODBCDriver, ConnectionString)
SQLSETPROP(0,'DispLogin',3)&&關(guān)閉登錄窗
IF lreturn=0 &&不存在,則添加新的ODBC
lreturn=SQLConfigDataSource(lnWindowHandle, 1, lcODBCDriver, ConnectionString)
IF lreturn=0 &&失敗
MessageBox('添加ODBC數(shù)據(jù)源失敗,請(qǐng)與系統(tǒng)管理員聯(lián)系!',16,'警告')
return
ENDIF
ENDIf
*通過API動(dòng)態(tài)建立odbc
DECLARE INTEGER SQLConfigDataSource IN odbccp32 INTEGER, INTEGER, STRING, STRING
lnWindowHandle=0
lcODBCDriver='Informix-CLI 2.5 (32 bit)' &&DRIVER類型
lcODBCName='zzsj' &&數(shù)據(jù)源名字
lcODBCDesc='總賬數(shù)據(jù)庫(kù)' &&數(shù)據(jù)源描述
lcODBCServer='Informix' &&SSERVER名字
lcODBCDatabase='mis2' &&要連接的數(shù)據(jù)庫(kù)名字
lcSERV='zz_service' &&service
lcSRVR='ccbzz_fj' &&server
lcHost='11.12.13.45'
lcUID='123456'&&password
lcProtocol='onsoctcp'
lcReadOnly='No'
lcServerType='Informix 7.2'
ConnectionString ='DSN=' + lcODBCName + CHR(0) ;
+ 'Description=' + lcODBCDesc + CHR(0) ;
+ 'DB=' + lcODBCServer + CHR(0) ;
+ 'Host=' + lcHost + CHR(0) ;
+ 'SERV=' + lcSERV + CHR(0) ;
+ 'SRVR=' + lcSRVR + CHR(0) ;
+ 'UID=' + lcUID + CHR(0) ;
+ 'CursorBehavior=0' + CHR(0) ;
+ 'EnableScrollableCursors=0' + CHR(0) ;
+ 'GetDBListFromInformix=1' + CHR(0) ;
+ 'YieldProc=1' + CHR(0) ;
+ 'Protocol=' + lcProtocol + CHR(0) ;
+ 'Database=' + lcODBCDatabase + CHR(0)
**先試圖修改已有的ODBC,如果不存在,返回0。
lreturn=SQLConfigDataSource(lnWindowHandle, 2, lcODBCDriver, ConnectionString)
SQLSETPROP(0,'DispLogin',3)&&關(guān)閉登錄窗
IF lreturn=0 &&不存在,則添加新的ODBC
lreturn=SQLConfigDataSource(lnWindowHandle, 1, lcODBCDriver, ConnectionString)
IF lreturn=0 &&失敗
MessageBox('添加ODBC數(shù)據(jù)源失敗,請(qǐng)與系統(tǒng)管理員聯(lián)系!',16,'警告')
return
ENDIF
ENDIf