begin//创建键值失败
memo1.lines.add(’增加ODBC数据源失败’);
exit;
end;
CloseKey;
//找到或创建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中都能用到的.
3COME考试频道为您精心整理,希望对您有所帮助,更多信息在http://www.reader8.com/exam/