自动创建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驱动程序可以指定到特定的目录或文件。