如何用代碼配置ODBC數據源

//如何用代碼配置ODBC數據源
自動創建ODBC是基於對Windows註冊表的直接寫操作來實現的
步驟:
一、創建函數:
gf_create_odbc(string as_odbc_name,string as_odbc_type,string as_path)
string ls_key,ls_key1
ls_key    = 'HKEY_CURRENT_USER/Software/ODBC/ODBC.INI/'+as_odbc_name
ls_key1 = 'HKEY_CURRENT_USER/Software/ODBC/ODBC.INI/ODBC Data Sources'
if as_odbc_type = 'DBF' then
Registryset(ls_key,'Driver',"C:/WINDOWS/SYSTEM/PBDBF12.DLL")
Registryset(ls_key,'Description',"自動生成ODBC'")
Registryset(ls_key,'Database',as_path)
Registryset(ls_key,'CreateType',"FoxPro25")
Registryset(ls_key,'Locking',"RECORD")
Registryset(ls_key,'LockCompatibility',"Fox")
Registryset(ls_key,'FileOpenCache',"1")
Registryset(ls_key,'CacheSize',"4")
Registryset(ls_key,'DataFileExtension',"DBF")
Registryset(ls_key,'IntlSort',"C:0")
Registryset(ls_key,'UseLongNames',"1")
Registryset(ls_key,'UseLongQualifiers',"1")
Registryset(ls_key,'ApplicationUsingThreads',"1")
Registryset(ls_key1,as_odbc_name,"PB INTERSOLV OEM 3.01 32-BIT dBASEFile (*.dbf)")
end if
if as_odbc_type = 'SQLANY' then
Registryset(ls_key,'Driver',as_path+"WOD50T.DLL")
Registryset(ls_key,'Description',"自動生成ODBC'")
Registryset(ls_key,'UID',"DBA")
Registryset(ls_key,'PWD',"SQL")
Registryset(ls_key,'Start',as_path+'dbeng50')
Registryset(ls_key,'DatabaseFile',as_path+as_odbc_name+'.DB')
Registryset(ls_key,'DatabaseName',as_odbc_name)
Registryset(ls_key,'AutoStop',"Yes")
Registryset(ls_key1,as_odbc_name,"Sybase SQL Anywhere 5.0")
end if
if as_odbc_type = 'FOXPRO' then
Registryset(ls_key,'DefaultDir',as_path)
Registryset(ls_key,'Description',as_odbc_name+"的自動ODBC'")
Registryset(ls_key,'Driver','C:/WINDOWS/SYSTEM/odbcjt32.dll')
Registryset(ls_key,'DriverId',ReguLong!,280)
Registryset(ls_key,'FIL',"FoxPro 2.0")
Registryset(ls_key,'SafeTransactions',ReguLong!,0)
Registryset(ls_key,'UID',"")
Registryset(ls_key+'/Engines/Xbase','CollatingSequence','ASCII')
Registryset(ls_key+'/Engines/Xbase','Deleted',Regulong!,1)
Registryset(ls_key+'/Engines/Xbase','ImplicitCommitSync','Yes')
Registryset(ls_key+'/Engines/Xbase','PageTimeout',ReguLong!,600)
Registryset(ls_key+'/Engines/Xbase','Statistics',Regulong!,0)
Registryset(ls_key+'/Engines/Xbase','Threads',Regulong!,3)
Registryset(ls_key+'/Engines/Xbase','UserCommitSync','Yes')
Registryset(ls_key1,s_dbfname,"Microsoft FoxPro Driver (*.dbf)")
end if
...
二、在建立聯接前先創建該ODBC的相關信息,如
...
string ls_dbfname="c:/Foxprow/Database"
gf_create_odbc('TestDBF','FOXPRO',ls_dbfname)
SQLCA.DBMS = "ODBC"
SQLCA.AutoCommit = False
SQLCA.Database = 'TestDBF'
SQLCA.dbparm = "ConnectString='DSN=TestDBF'"
connect using sqlca;
if sqlca.sqlcode <> 1 then
messagebox('錯誤','無法連接到制定的數據庫文件!('+ls_dbfname+')',stopsign!)
halt close;
end if
...
三、刪除該ODBC設置;
創建公用函數 gf_erase_odbc(string as_odbc_name)
...
通過以上步驟,就不需要通過控制面板中的 ODBC工具來設置了。
您可以考慮以下改進:
1、增加ODBC創建函數的參數設置;
2、自己做一個ODBC的設置工具,可以在系統內運行;
3、ODBC驅動程序可以指定到特定的目錄或文件。

 

轉自:http://blog.csdn.net/bjash/archive/2007/07/08/1682580.aspx

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章