您的位置:首页 > 编程语言 > Delphi

在DELPHI程序中动态设置ODBC数据源(2/2)

2012-05-18 16:36 204 查看
//找到或创建Software\ODBC\ODBC.INI

\MyAccess,写入DSN配置信息

if OpenKey(Software\ODBC\ODBC.INI

\MyAccess,True) then

begin

WriteString( DBQ, C:\inetpub\wwwroot

\test.mdb );//数据库目录

WriteString( Description,

我的新数据源 );//数据源描述

WriteString( Driver, C:\PWIN98\SYSTEM\

odbcjt32.dll );//驱动程序DLL文件

WriteInteger( DriverId, 25 );

//驱动程序标识

WriteString( FIL, Ms Access; );

//Filter依据

WriteInteger( SafeTransaction, 0 );

//支持的事务操作数目

WriteString( UID, );//用户名称

bData[0] := 0;

WriteBinaryData( Exclusive, bData, 1 );

//非独占方式

WriteBinaryData( ReadOnly, bData, 1 );

//非只读方式

end

else//创建键值失败

begin

memo1.lines.add(增加ODBC数据源失败);

exit;

end;

CloseKey;

//找到或创建Software\ODBC\ODBC.INI

\MyAccess\Engines\Jet

//写入DSN数据库引擎配置信息

if OpenKey(Software\ODBC\ODBC.INI

\MyAccess\Engines\Jet,True) then

begin

WriteString( ImplicitCommitSync, Yes );

WriteInteger( MaxBufferSize, 512 );//缓冲区大小

WriteInteger( PageTimeout, 10 );//页超时

WriteInteger( Threads, 3 );//支持的线程数目

WriteString( UserCommitSync, Yes );

end

else//创建键值失败

begin

memo1.lines.add(增加ODBC数据源失败);

exit;

end;

CloseKey;

memo1.lines.add(增加新ODBC数据源成功);

Free;

end;

end;

---- 以上程序在PWIN98+DELPHI3.0下调试通过.

---- 下面是创建常见数据库类型的DSN需要设置的信息([]为注释内容,除特殊注释外,各参数可见前面说明):

---- 1.Access(Microsoft Access Driver(*.mdb))

DBQ、Description、Driver[odbcjt32.dll]、

DriverID[25]、FIL[Ms Access;]、

SafeTransaction[默认为0]、UID[默认为空]、

Engines\Jet\ImplicitCommitSync[默认为Yes]、

Engines\Jet\MaxBufferSize[默认512]、

Engines\Jet\PageTimeout[默认为512]、

Engines\Jet\Threads[默认为3]、

Engines\Jet\UserCommitSync[默认为Yes]

可选设置:SystemDb[字符串,系统数据库的路径]、

ReadOnly[二进制,是否以只读方式打开,1为是,默认为0]、

Exclusive[二进制,是否以独占方式打开,1为是,默认为0]、

PWD[字符串,用户密码]

---- 2.EXCEL(Microsoft Excel Driver(*.xls))

DBQ[Excel97(=path\xxx.xls)、5.0/7.0

(=path\xxx.xls)、4.0(=path)、3.0(=path)]、

Description、Driver[odbcjt32.dll]、

DefaultDir[Excel97(< >DBQ)、5.0/7.0

(< >DBQ)、4.0(=DBQ)、3.0(=DBQ)]、

DriverID[790(Excel97)、22(5.0/7.0)、278(4.0)、534(3.0)]、

FIL[Excel5.0;]、ReadOnly、SafeTransaction、UID、

Engines\Excel\ImplicitCommitSync、

Engines\Excel\MaxScanRows[数字,扫描行数,默认为8]、

Engines\Excel\Threads、Engines\Excel\UserCommitSync、

Engines\Excel\FirstRowHasName[二进制,第一行是否是域名,

1表示是,默认为1]

---- 注: Excel97和Excel7.0/5.0的DBQ对应一个XLS文件,而Excel4.0和Excel3.0则对应一个目录;DefaultDir对应一个目录,在Excel97和Excel7.0/5.0中是DBQ所对应的路径,而在Excel4.0和Excel3.0下则与DBQ相同;各个版本的DriverID不同.

---- 3.dBase(Microsoft dBase Driver(*.dbf))

DefaultDir[字符串,数据库文件所在目录]、

Description、Driver[odbcjt32.dll]、

DriverID[277(IV)、533(5.0)]、

FIL[dbase III;]、SafeTransaction、UID、

Engines\Xbase\ImplicitCommitSync、

Engines\Xbase\Collating[字符串,排序依据,

可为ASCII、International、Norwegian-Danish、

Swedish-Finnish]、

Engines\Xbase\Deleted[二进制,是否不显示

被软删除的记录,0表示显示,默认为1]、

Engines\Xbase\PageTimeout[默认为600]、

Engines\Xbase\UserCommitSync、

Engines\Xbase\Threads、Engines\Xbase

\Statistics[二进制,是否用大约的行数,1为是,默认0]

注:(dBaseIV和dBase5.0两个版本的DriverId有不同)

---- 4.Foxpro(Microsoft Foxpro Driver(*.dbf))

DefaultDir[数据库文件所在目录]、

Description、Driver[odbcjt32.dll]、

DriverID[536(2.6)、280(2.5)]、

FIL[Foxpro 2.0;]、SafeTransaction、UID、

Engines\Xbase\Collating[字符串,

排序依据,可为ASCII、International]、

Engines\Xbase\Deleted[二进制,是否不显示

被软删除的记录,0表示显示,默认为1]、

Engines\Xbase\PageTimeout[默认为600]、

Engines\Xbase\UserCommitSync、

Engines\Xbase\Threads、Engines\Xbase

\Statistics[二进制,是否用大约的行数,1为是,默认0]

注:(Foxpro2.5和Foxpro2.6两个版本的DriverId有不同)

---- 把上面程序做成一个COM或ActiveX控件吧,在很多高级程序设计语言如DELPHI、C++Buider、VB、VC、PB中都能用到的.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: