在下面的例子程序中,将按以上步骤建立一个系统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( '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;
通过上面的代码,我们就能够在程序中动态设置ODBC数据源了。
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。