怎样在安装程序时自动建立ODBC?(300分)

  • 主题发起人 anddyluo
  • 开始时间
A

anddyluo

Unregistered / Unconfirmed
GUEST, unregistred user!
我开发了一个数据库软件,要用到ODBC,怎样在安装程序时自动建立此ODBC,而不需要手动
到“控制面板“的“数据源 (ODBC)“中添加一个系统DSN ???
 
在安装程序中写注册表
 
[DELPHI]配置ODBC的代码
var
reg: TRegistry;
Driver: string;
begin
//建立和更新odbc数据源
//查找ODBCINST.INI键,如果sql server的驱动程序没有安装,则提示退出
//如果存在,则进行配置
reg := TRegistry.Create;
try
with regdo
begin
RootKey := HKEY_LOCAL_MACHINE;
if OpenKey('Software/ODBC/ODBCINST.INI/SQL Server', False) then
begin
//如果存在sql server 驱动程序
Driver := ReadString('Driver');
CloseKey;
if OpenKey('Software/ODBC/ODBC.INI/ODBC Data Sources', True) then
begin
//注册一个DSN名称
WriteString(Edit_DataSource.Text, 'SQL Server');
end
else
begin
//创建键值失败
Application.MessageBox(pchar('在创建DSN' + edit_datasource.text + '时发生错误'), '创建ODBC数据源失败', MB_ICONINFORMATION or MB_OK);
exit;
end;
CloseKey;
//end 建立dsn
if OpenKey('Software/ODBC/ODBC.INI/' + Edit_DataSource.Text, True) then
begin
WriteString('Database', Edit_DataSource.Text);
WriteString('Driver', Driver);
WriteString('LastUser', Edit_LoginUser.Text);
WriteString('Server', Edit_Ip.Text);
end
else
begin
//创建键值失败
Application.MessageBox(pchar('在创建DSN' + edit_datasource.text + '时发生错误'), '创建ODBC数据源失败', MB_ICONINFORMATION or MB_OK);
exit;
end;
CloseKey;
end
else
Application.MessageBox('在当前机器上没有安装 SQL Server的ODBC 驱动程序!,请安装相应的驱动程序', '驱动程序出错', MB_ICONINFORMATION or MB_OK);
CloseKey;
end;
finally
reg.Free;
end;
end;

 
安裝程序都有這功能啊.
 
可以在制作安装程序里添加注册表信息,以Access数据库为例添加以下注册表信息:
以下的DNS NAME换成需要的你自己的DNS NAME
[HKEY_LOCAL_MACHINE/SOFTWARE/ODBC/ODBC.INI/ODBC Data Sources]
"DNS NAME"="Microsoft Access Driver (*.mdb)"
[HKEY_LOCAL_MACHINE/SOFTWARE/ODBC/ODBC.INI/DNS NAME]
"DBQ"="Access数据库文件的路径"
"Description"="DNS Description"
"Driver"="<WINDIR>//System32//odbcjt32.dll"
"DriverId"=dword:00000019
"FIL"="MS Access;"
"SafeTransactions"=dword:00000000
"UID"=""
[HKEY_LOCAL_MACHINE/SOFTWARE/ODBC/ODBC.INI/wscdata/Engines]
[HKEY_LOCAL_MACHINE/SOFTWARE/ODBC/ODBC.INI/wscdata/Engines/Jet]
"ImplicitCommitSync"=""
"MaxBufferSize"=dword:00000800
"PageTimeout"=dword:00000005
"Threads"=dword:00000003
"UserCommitSync"="Yes"
 
应该是写注册表,你可以自己建立一个,然后到注册表中看一下。
 
用wise制作安装程序可以建好ODBC的。
 
多人接受答案了。
 
顶部