最近做了一个小程序,主要是利用ado进行数据库的连接。把可执行文件拷贝到别的环境下面就发生错误。从网上搜了部分帖子,都是说要ado版本问题。必须打包,于是从网上下载了最新的mdac_typ2.8。exe 可总是会出现连接错误。
最终终于把问题解决了。现在把自己的一点心得总结一下。(也许对高手来说比较简单)
因为我是用sqlanywhere 8.0 做的,所以就以anywhere数据库为例
1、写注册表
Reg := TRegistry.Create;
Reg := TRegistry.Create;
Reg.RootKey := HKEY_LOCAL_MACHINE;
If Reg.OpenKey('Software/ODBC/ODBCINST.INI/Adaptive Server Anywhere 8.0',false) = False Then
Begin
Reg.OpenKey('Software/ODBC/ODBCINST.INI/Adaptive Server Anywhere 8.0',true)
Reg.WriteString('Driver',CurPath + '/SQL Anywhere 8/win32/dbodbc8.dll');
Reg.WriteString('Setup',CurPath + '/SQL Anywhere 8/win32/dbodbc8.dll');
Reg.CloseKey;
End;
Reg.RootKey := HKEY_LOCAL_MACHINE;
If Reg.OpenKey('Software/ODBC/ODBCINST.INI/ODBC Drivers',True) = True Then
Begin
Reg.WriteString('Adaptive Server Anywhere 8.0','Installed');
End;
解释:上面的操作主要是写注册表的驱动信息。
1) 在注册表HKEY_LOCAL_MACHINE/Software/ODBC/ODBCINST.INI/Adaptive Server Anywhere 8.0下面写驱动信息。包括driver 和steup。
1) 在注册表HKEY_LOCAL_MACHINE/Software/ODBC/ODBCINST.INI/Adaptive Server Anywhere 8.0下面写驱动信息。包括driver 和steup。
2) 在注册表中HKEY_LOCAL_MACHINE/Software/ODBC/ODBCINST.INI/ODBC Drivers中建立一个Adaptive Server Anywhere 8.0 字符串值为Installed
2、建立ado连接字符串
Constring:=’Driver={Adaptive Server Anywhere 8.0};PWD=sql;UID=dba;autostop=yes;database=../database/sjcj.db;;start=../SQL Anywhere 8/win32/dbeng8.exe -Q' ‘;
ADOCon_src.Close;
ADOCon_src.ConnectionString := Constring;
ADOCon_src.Connected := True;
解释:
1) .. 表示位置。我是取得当前程序所在的路径,可以替换绝对路径
2)把adoconnetion 的连接字符串替换成 生成的连接字符串 constring就可以了
2)把adoconnetion 的连接字符串替换成 生成的连接字符串 constring就可以了
通过上面写注册表和生成ado连接字符串就完全可以在没有anywhere数据库机器上面用ado连接字符串了。更没有必要为了打包ado而头疼。
至于ado连接字符串 drivert={驱动程序} 驱动程序完全可以通过写注册表完成。