库描述]
Driver=C:\PWIN98\System\odbcjt32.dll
[字符串,表示驱动
程序,可见ODBCINST.INI]
DriverId=0x00000019(25)
[数字,表示驱动
程序标识,不能改变]
FIL=Ms Access;
[字符串,可能与过滤Filter有关]
SafeTransaction=0x00000000
[数字,可能表示支持事务性操作的个数]
UID=""
[字符串,表示用户名称,此处为空字符串]
---- 3.在HKEY_LOCAL_MACHINE\Software\ODBC\ODBC.INI\MyAccess中创建一个子键(SubKey)Engines, 再在其下创建子键(SubKey)Jet,即创建一个键为 HKEY_LOCAL_MACHINE\Software\ODBC\ODBC.INI\MyAccess\Engines\Jet,然后在其下创建一些 键值,详细描述一个系统DSN的数据库引擎配置信息,主要信息有(中的内容为笔者注释):
ImplicitCommitSync=Yes
[字符串,可能表示是否立即反映数据修改]
MaxBufferSize=0x00000200(512)
[数字,表示缓冲区大小]
PageTimeout=0x00000005(5)
[数字,表示页超时]
Threads=0x00000003(3)
[数字,可能表示支持的最大线程数目]
UserCommitSync=Yes
[字符串,可能表示是否立即将数据修改反映到用户]
---- 以上是建立一个系统DSN的基本信息(其它信息如选项或高级选项等信息也在这里设置,只不过因采用默认信息,注册表里没有列出),我们在程序中按上述步骤操作注册表,同样也能增加一个系统DSN或修改其配置.在下面的例子程序中,将按以上步骤建立一个系统DSN,请注意
程序中的注释.
{*******************************************************
在本
程序中,将创建一个ODBC系统数据源(DSN),
数据源名称:MyAccess 数据源描述:我的新数据源
数据库类型:ACCESS97
对应数据库:C:\Inetpub\wwwroot\test.mdb
*******************************************************}
{ 注意应在USES语句中包含Registry }
procedure TForm1.Button1Click(Sender: TObject);
var
registerTemp : TRegistry;
bData : array[ 0..0 ] of byte;
begin
registerTemp := TRegistry.Create;
//建立一个Registry实例
with registerTemp do
begin
RootKey:=HKEY_LOCAL_MACHINE;
//设置根键值为HKEY_LOCAL_MACHINE
//找到Software\ODBC\ODBC.INI\ODBC Data Sources
if OpenKey(''Software\ODBC\ODBC.INI
\ODBC Data Sources'',True) then
begin //注册一个DSN名称
WriteString( ''MyAccess'', ''Microsoft
Access Driver (*.mdb)'' );
end
else
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( '