如何逐行读取文本文件内容到ADOConnection的ConnectionString属性中用以设置连接到服务器合数据库等的属性,特别是将程序做成安装文件后是否可以在安装过程中读取,即当更换服务器后只要修改文本文件就能正确使用软件,而不用重新修改程序、打包、逐台客户机重新安装。Thanks a lot!
解决方案 »
- 各位大牛有时间过来看看这个问题!
- 大家来YY,如果windows是中国人开发,想象哈API会怎么取名字?
- delphi API互斥量的问题
- 请问大家,如何用ReportMachine 实现多重分组打印啊!!!先谢谢了
- C/S结构客户端机子每次都要在网上邻居里访问一次数据库服务器,才可以连接上数据库
- 请教一个Delphi和Windows 2003的问题!
- 如何让quickRep预览显示锁定在一定区域里(如在panel)
- 编写函数
- 祝大家新的一年快乐幸福!
- 我刚开始学delphi,请大虾们帮我看看哪儿错了.
- 谁知道ERWIN4.0乱码问题,在线等待!答对即送100分
- 100分救命关于结构的网络传输问题
MyIni := TIniFile.Create(FileNameWithPath) ;
with MyIni do
begin
with ADOConnection1 do
begin
ConnectionString := ReadString('DataBase','ConnectionString','') ;
LoginPrompt := False ;
Open ;
end ;
Free ;
end ;
Ini 文件可以这样 :[DataBase]
ConnectionString= ...
MyIni := TIniFile.Create(FileNameWithPath) ;
with MyIni do
begin
with ADOConnection1 do
begin
ConnectionString := ReadString('DataBase','ConnectionString','') ;
LoginPrompt := False ;
Open ;
end ;
Free ;
end ;
Ini 文件可以这样 :[DataBase]
ConnectionString= ...
就不需要逐行分析读取了
直接读一行的值赋给ADOConnection.ConnectinString就行了
var
LocalVer, RemoteVer: Integer; //本地版本号 、服务器版本号
Reg: TRegistry;
RegBase, ServerName, LocalFilePath, RemoteFilePath, FileName, Address, Host, Port, Service, s: String;
Save_Cursor:TCursor;
begin
Reg := TRegistry.Create;
RegBase := '\SoftWare\BlueSky\FileAutoDownLoad\';
//读注册表找服务器-------------------------------
try
Reg.RootKey := HKEY_LOCAL_MACHINE;
if Reg.OpenKey(KeyName,true) then
ServerName := UpperCase(Reg.ReadString('ServerName')); //读注册表中服务器名称;
finally
Reg.CloseKey;
end;
ConnectionIsValid(ServerName); //按注册表中数据库服务器名进行数据库连接
while (not ServerIsValid) do //找不到数据库服务器
begin
ServerName := '服务器名';
if not InputQuery('信息', '服务器名不正确,请重新输入: ', ServerName) then //退出
begin
NoNew := 0;
Exit;
end
else //有返回的数据库服务器名
begin
ConnectionIsValid(ServerName); //按输入的数据库服务器名进行数据库连接
end;
end; LocalFilePath := UpperCase(Application.ExeName);
FileName := ExtractFileName(LocalFilePath);
try
qryTemp.SQL.Text := 'select * from DL_FILE where DLFILE01 =:FilePath';
qryTemp.Parameters.Items[0].Value := FileName;
qryTemp.Open;
if (not qryTemp.IsEmpty ) then
begin
RemoteFilePath := qryTemp.FieldValues['DLFILE02'];
RemoteVer := qryTemp.FieldValues['DLFILE03'];
end
else
begin
MessageDlg('在数据库服务器表DL_FILE中找不到'+FileName+'对应的版本记录!'+#13+'无法下载最新版本的应用程序。请与软件供应商联系。', mtWarning ,[mbYes],0);
end;
qryTemp.SQL.Text := 'select * from DL_SERVER';
qryTemp.Open; if (not qryTemp.IsEmpty ) then
begin
Address := qryTemp.FieldValues['DL_SERVER01'];
Host := qryTemp.FieldValues['DL_SERVER02'];
Port := qryTemp.FieldValues['DL_SERVER03'];
Service := qryTemp.FieldValues['DL_SERVER04']; if (Reg.OpenKey(RegBase, true)) then
begin
s := Trim(Reg.ReadString(FileName));
if s = '' then LocalVer := 0
else LocalVer := StrToInt(s);
//LocalVer := (s="" ? 0:StrToInt(s));
Reg.WriteString('',FileName);
Reg.WriteString(FileName,IntToStr(RemoteVer));
Reg.CloseKey;
if (Reg.OpenKey(RegBase + 'CurrentFile', true)) then
begin
Reg.WriteString('LocalFilePathName',LocalFilePath);
Reg.WriteString('RemoteFilePathName',RemoteFilePath);
end;
Reg.CloseKey;
if (Reg.OpenKey(RegBase + 'ServerParameter', true)) then
begin
Reg.WriteString('Address',Address);
Reg.WriteString('Host',Host);
Reg.WriteString('Port',Port);
Reg.WriteString('Service',Service);
end;
Reg.CloseKey;
end;
if (RemoteVer <> LocalVer) then
NoNew := 2
else NoNew := 1;
end
else NoNew := 1;
finally
Reg.Free;
end;
end;//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 连接数据库 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
procedure Tfrm_START.ConnectionIsValid(ServerName: String);
Var
Reg : TRegistry;
ConnStr : String;
begin
ConnStr := 'Provider=SQLOLEDB.1;';
ConnStr := ConnStr+ 'Password=scchuser2002;';
ConnStr := ConnStr+'Persist Security Info=True;';
ConnStr := ConnStr+'User ID=scchuser;';
ConnStr := ConnStr+'Initial Catalog=LTMRPDB;';
ConnStr := ConnStr+'Data Source=';
ConnStr := ConnStr+ UpperCase(ServerName)+';';
ConnStr := ConnStr+'Use Procedure for Prepare=1;';
ConnStr := ConnStr+'Auto Translate=True;';
ConnStr := ConnStr+'Packet Size=4096;';
ConnStr := ConnStr+'Use Encryption for Data=False;';
ConnStr := ConnStr+'Tag with column collation when possible=False;';
try
ADOCON_LOADVer.Connected := false;
ADOCON_LOADVer.ConnectionString := ConnStr;
ADOCON_LOADVer.Connected := true;
except
ADOCON_LOADVer.Connected := false;
end;
if ADOCON_LOADVer.Connected then
begin
ServerIsValid := true;
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_LOCAL_MACHINE;
if Reg.OpenKey(KeyName,true) then
begin
Reg.WriteString('ServerName',ServerName); //写入注册表;
end;
finally
Reg.Free;
end;
end
else ServerIsValid := false;
end;