自动创建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驱动程序可以指定到特定的目录或文件。
自动创建ODBC
最新推荐文章于 2023-05-11 19:13:55 发布