手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网站运营>建站经验>列表

通过数据库连接参数确保程式可移植性

来源:互联网 作者:west263.com 时间:2008-04-16
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!
     //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
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!