请教各位前辈!
从ini文件中读出的字符串该怎样赋给ADOConnection的ConnectionString属性?请完整的写出来可以么?
从ini文件中读出的字符串该怎样赋给ADOConnection的ConnectionString属性?请完整的写出来可以么?
解决方案 »
- 多线程问题哪里没有同步好?
- exe怎么写成dll 分开处理
- DBGrid可以多行选择,请问如何得到已选中所有行中的第一列值
- DELPHI 7 开发的数据库应用程序如何制作 安装程序来发布出去?
- 一个api问题?
- 我在用PDU 7位V发送短信时,什么会有乱码出现啊?什么原因??
- 如何把设置保存问一个文件,下次使用软件的时候再读入,变成上次关闭的样子
- 请问要拷贝些什么文件?
- ■关于D6的InstallShield■200分希望只给一个人■
- 在线程中,能否打开ClientDataSet数据集???
- 主从表查询
- 关注《软件研发》杂志(DDJ,Software Development,CUJ等名刊中文版),网址:www.ddjchina.com
connectstr: string;
begin
Myini := TInifile.create('D:\myini.ini');
connectstr := myini.readstrint('ado','connectstr','');
if connectstr <> '' then
begin
if ADOConnection1.Connected then
ADOConnection1.Connected :=false;
ADOConnection1.ConnectionString :=trim(conncetstr);
end;end;
Unit FConf : 将信息写入INI文件的单元
Unit DBModule : 包括一个数据源的模块,用来读取INI文件中 ADOConnection 的配置参数 (读取,更改方法)
RWini------------------------------------------>DB.ini
| |
| |
| |
| |
| ( 读取DB.ini文件,ADOConnect连结失败) |
FConf <------------------------------------------DBModule
(根据Rwini提供的方法更改DB.Ini) 读取DB.ini文件,连接ADOConnection //RWini.pas
{
模块名称:配置文件读写
编写人:blue
}
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.//Unit DBModule 用来检查INI的参数unit DBModule;interfaceuses
SysUtils, Classes, DB, ADODB,
Messages,Windows,Forms,Dialogs;type
TDataModule1 = class(TDataModule)
conn: TADOConnection;
DotSource: TDataSource;
QryDot: TADOQuery;
QryOneDot: TADOQuery;
OneDotSource: TDataSource;
RealSource: TDataSource;
QryReal: TADOQuery;
procedure DataModuleCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
DataModule1: TDataModule1;implementationuses frmConf, RWini,ComObj, main;{$R *.dfm}procedure TDataModule1.DataModuleCreate(Sender: TObject);
var
confForm : TConf; //用来设置INI文件的窗口
begin
//读取配置文件信息
conn.ConnectionString := RWini.getConnStr;
try
conn.Open;
except
on Err : EOLEException do
begin
conn.Close;
MessageDlg('无法连接数据库,请重新输入配置信息',mtError,[mbOK],0);
confForm := TConf.Create(self);
confForm.ShowModal;
Application.Terminate; //程序终止
end;
end;end;
end.
//登录窗口
unit frmConf;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, cxLookAndFeelPainters, StdCtrls, cxButtons, cxControls,
cxContainer, cxEdit, cxTextEdit, cxLabel, cxMaskEdit, Mask;type
TConf = class(TForm)
edtServer: TcxTextEdit;
edtDatabase: TcxTextEdit;
edtUser: TcxTextEdit;
btnOK: TcxButton;
btnCancle: TcxButton;
cxLabel1: TcxLabel;
cxLabel2: TcxLabel;
cxLabel3: TcxLabel;
cxLabel4: TcxLabel;
edtPassword: TcxTextEdit;
procedure FormShow(Sender: TObject);
procedure btnOKClick(Sender: TObject);
procedure btnCancleClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Conf: TConf;implementationuses RWini;{$R *.dfm}//将db.ini的登录信息填入窗体的各个edit组件里
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;//将信息写入db.ini文件 **
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;procedure TConf.btnCancleClick(Sender: TObject);
begin
close;
end;end.
Unit FConf : 将信息写入INI文件的单元
Unit DBModule : 包括一个数据源的模块,用来读取INI文件中 ADOConnection 的配置参数 (读取,更改方法)
RWini------------------------------------------>DB.ini
| |
| |
| |
| |
| ( 读取DB.ini文件,ADOConnect连结失败) |
FConf <------------------------------------------DBModule
(根据Rwini提供的方法更改DB.Ini) 读取DB.ini文件,连接ADOConnection //RWini.pas
{
模块名称:配置文件读写
编写人:blue
}
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.//Unit DBModule 用来检查INI的参数unit DBModule;interfaceuses
SysUtils, Classes, DB, ADODB,
Messages,Windows,Forms,Dialogs;type
TDataModule1 = class(TDataModule)
conn: TADOConnection;
DotSource: TDataSource;
QryDot: TADOQuery;
QryOneDot: TADOQuery;
OneDotSource: TDataSource;
RealSource: TDataSource;
QryReal: TADOQuery;
procedure DataModuleCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
DataModule1: TDataModule1;implementationuses frmConf, RWini,ComObj, main;{$R *.dfm}procedure TDataModule1.DataModuleCreate(Sender: TObject);
var
confForm : TConf; //用来设置INI文件的窗口
begin
//读取配置文件信息
conn.ConnectionString := RWini.getConnStr;
try
conn.Open;
except
on Err : EOLEException do
begin
conn.Close;
MessageDlg('无法连接数据库,请重新输入配置信息',mtError,[mbOK],0);
confForm := TConf.Create(self);
confForm.ShowModal;
Application.Terminate; //程序终止
end;
end;end;
end.
//登录窗口
unit frmConf;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, cxLookAndFeelPainters, StdCtrls, cxButtons, cxControls,
cxContainer, cxEdit, cxTextEdit, cxLabel, cxMaskEdit, Mask;type
TConf = class(TForm)
edtServer: TcxTextEdit;
edtDatabase: TcxTextEdit;
edtUser: TcxTextEdit;
btnOK: TcxButton;
btnCancle: TcxButton;
cxLabel1: TcxLabel;
cxLabel2: TcxLabel;
cxLabel3: TcxLabel;
cxLabel4: TcxLabel;
edtPassword: TcxTextEdit;
procedure FormShow(Sender: TObject);
procedure btnOKClick(Sender: TObject);
procedure btnCancleClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Conf: TConf;implementationuses RWini;{$R *.dfm}//将db.ini的登录信息填入窗体的各个edit组件里
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;//将信息写入db.ini文件 **
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;procedure TConf.btnCancleClick(Sender: TObject);
begin
close;
end;end.