
//RWini.pas
{
模块名称:配置文档读写
编写人:blue
编写日期:2003-4-26
模块功能:从系统配置文档中读取系统运行所需的各项参数
将系统运行所需的各项参数写入系统配置文档
生成数据库连接字符串
}
unit RWini;
interface
uses INIFiles;
const strINIname = 'db.ini';//INI文档的文档名,大家根据具体情况修改
var
iniParam : TINIFile;
strLocal : String;
procedure readParam(out server:String;out
database:string;out user:string;out password:string);
procedure writeParam(server:string;database:string;
user:string;password:string);
function getConnStr:string;
implementation
procedure readParam(out server:String;out database:string;
out user:string;out password:string);
begin
//从配置文档中读取数据库连接参数
server := iniParam.ReadString('dbParam','Data Source',');
database := iniParam.ReadString('dbParam','Initial Catalog',');
user := iniParam.ReadString('dbParam','User ID',');
password := iniParam.ReadString('dbParam','Password',');
end;
procedure writeParam(server:string;database:string;
user:string;password:string);
begin
//将数据库连接参数写入配置文档
iniParam.WriteString('dbParam','Data Source',server);
iniParam.WriteString('dbParam','Initial Catalog',database);
iniParam.WriteString('dbParam','User ID',user);
iniParam.WriteString('dbParam','Password',password);
end;
function getConnStr:String;
var
server,database,user,password : String;
begin
//生成数据库连接串
readParam(server,database,user,password);
result := 'Provider=SQLOLEDB.1;Password=' password ';
Persist Security Info=True;User ID=' user ';
Initial Catalog=' database ';Data Source=' server;
end;
initialization
getDir(0,strLocal);
iniParam := TINIFile.Create(strLocal '\' strINIname);
finalization
iniParam.Free;
end.
在程式数据模块的Create事件中添加下面的代码:
procedure TDM.DataModuleCreate(Sender: TObject);
var
confForm : TConf;
begin
conn.ConnectionString := RWini.getConnStr;
try
conn.Open;
except
on Err : EOLEException do
begin
confForm := TConf.Create(self);
confForm.ShowModal;
end;
end;
end;
|
这样,在程式执行过程中,将自动从INI文档中读取数据库连接参数,连接数据库,假如连接出现错误,将显示参数配置窗口,让用户配置数据库连接参数。配置窗口的代码如下:
//上面的代码省略
uses RWini;
{$R *.dfm}
procedure TConf.FormShow(Sender: TObject);
var
sServer,sDatabase,sUser,sPassword : String;
begin
readParam(sServer,sDatabase,sUser,sPassword);
self.edtServer.Text := sServer;
self.edtDatabase.Text := sDatabase;
self.edtUser.Text := sUser;
self.edtPassword.Text := sPassword;
self.ActiveControl := self.btnOK;
end;
procedure TConf.btnCancelClick(Sender: TObject);
begin
close;
end;
procedure TConf.btnOKClick(Sender: TObject);
var
sServer,sDatabase,sUser,sPassword : String;
begin
sServer := self.edtServer.Text;
sDatabase := self.edtDatabase.Text;
sUser := self.edtUser.Text;
sPassword := self.edtPassword.Text;
writeParam(sServer,sDatabase,sUser,sPassword);
close;
end;
|
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!