ODBC的DSN是保存在注册表的什么地方?

ghgk 2004-09-07 08:08:45
我有个数据驱动升级了版本之后,DSN需要旧的驱动。不能重新配置也删不掉,我想在注册表里手工修改
...全文
179 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
phineco 2004-09-07
  • 打赏
  • 举报
回复
HKEY_CURRENT_USER\software\ODBC\ODBC.ini
Delphi通过注册表在程序中增减和修改数据源,具体代码部分摘录://建立一个Registry实例,设置根键值为HKEY_LOCAL_MACHINE    if OpenKey('Software\ODBC\ODBC.INI\ODBC Data Sources',True) then    //找到Software\ODBC\ODBC.INI\ODBC Data Sources    WriteString( 'MyAccess', 'Microsoft Access Driver (*.mdb)')    //注册一个DSN名称    else    //创建键值失败    begin    memo1.lines.add('增加ODBC数据源失败');    exit;    end;    CloseKey;    if OpenKey('Software\ODBC\ODBC.INI\MyAccess',True) then    //找到或创建Software\ODBC\ODBC.INI\MyAccess,写入DSN配置信息    begin    WriteString( 'DBQ', 'C:\Demo\orders.mdb' );    //指定数据库目录    WriteString( 'Description', '新Access数据源' );    //数据源描述    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;    if OpenKey('Software\ODBC\ODBC.INI\MyAccess\Engines\Jet',True) then    //找到或创建Software\ODBC\ODBC.INI\MyAccess\Engines\Jet,写入DSN数据库引擎配置信息    begin    WriteString( 'ImplicitCommitSync', 'Yes' );    WriteInteger( 'MaxBufferSize', 512 );    //缓冲区大小    WriteInteger( 'PageTimeout', 10 );    //页超时    WriteInteger( 'Threads', 3 );    //支持的线程数目    WriteString( 'UserCommitSync', 'Yes' );    memo1.Lines.add('操作成功!');    end;   请下载完整实例的源码包。

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧