动态连接数据库(100分)

  • 主题发起人 主题发起人 272624800
  • 开始时间 开始时间
2

272624800

Unregistered / Unconfirmed
GUEST, unregistred user!
怎样实现将已生成的EXE文件 和数据库 拷到别的地方不用重新连接路径
 
把 exe 中链接数据写成可配置(如ini文件),到时直接修改配置文件就可以了
 
使用ado进行数据库连接,把连接参数放在ini文件,当程序在不同的环境运行时,修改int中参数就可以实现.把服务器名称,用户名称,密码,都放在INI文件.
下面的代码你参考.
procedure r_svr; //读数据库参数名称
var
tstr:widestring;
MyIniFile:tinifile;
ComputerName:array[0..30+1] of Char; // holds the name
Size:DWORD; // holds the size
u_name,P_str:string;
begin
if fileexists(path+'系统参数.ini')=false then
begin
messagedlg('还没有生产系统配置文件,请生成!',mterror, [mbok],0);
Exit;
end;
MyIniFile:=tinifile.Create(path+'系统参数.ini');
with MyIniFile do
begin
svr_name:=readString('服务器设置','计算机名称','');
u_name:=readString('服务器设置','用户id','sa');
P_str:=readString('服务器设置','密码','123456789');
end;
tstr:='Provider=SQLOLEDB.1;Password='+P_str+';Persist Security Info=True;User ID='+u_name+';Initial Catalog=dcjd_zs;Data Source='+svr_name+';Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=='+svr_name
+';Use Encryption for Data=False;Tag with column collation when possible=False';
if datam.DataM1.ADOConnection1.Connected=true then datam.DataM1.ADOConnection1.Connected:=false;
datam.DataM1.ADOConnection1.ConnectionString:=tstr;
try
datam.DataM1.ADOConnection1.Connected:=true;
sQL2000:=true;
except
messagedlg('请先启动SQL SERVER 2000!',mterror, [mbok],0);
sQL2000:=false;
end;
MyIniFile.Free;
end;
 
提供你一个函数
function GetConnStrFromIniFile(IiniFile: string): string;
var
DateSource, UseName, Psd: string;
MyIni: TIniFile;
begin
MyIni := TIniFile.Create(IiniFile);
DateSource := MyIni.ReadString('System', 'DateSource', '');
UseName := MyIni.ReadString('System', 'UseName', '');
Psd := MyIni.ReadString('System', 'Psd', '');
Result := Format('Provider=SQLOLEDB.1;Password=%s' +
';Persist Security Info=True;User ID=%s;' +
'Initial Catalog=AGRICULTURE_SCIENCE_INFO;Data Source=%s', [Psd, UseName, DateSource]);
MyIni.Free;
end;

这是调用过程
ADOConnection.ConnectionString := GetConnStrFromIniFile(ExtractFilePath(Application.ExeName) + 'SQLSysSet.ini');
ADOConnection.Connected := True;

INI文件内容
[System]
DateSource=127.0.0.1 //主机IP
UseName=GM //登陆名
Psd=admin //密码
 
接受答案了.
 
后退
顶部