***用ADO连接SQL Server数据库的实际做法? ( 积分: 100 )

S

sanqou

Unregistered / Unconfirmed
GUEST, unregistred user!
常常看到:ADO连接SQL Server数据库的实际应用中,把参数存为INT文件,若配置不正确,就弹出一个窗体,由用户重新填写连接参数;若参数正确,网络不通,就提示。这在实际开发中,是如何写程序的,请高手指点!
 
常常看到:ADO连接SQL Server数据库的实际应用中,把参数存为INT文件,若配置不正确,就弹出一个窗体,由用户重新填写连接参数;若参数正确,网络不通,就提示。这在实际开发中,是如何写程序的,请高手指点!
 
var
I: Integer;
s: string;
AList: TStringList;
begin
ADOCon.Close;
AIni := TIniFile.Create(ChangeFileExt(ParamStr(0), '.ini'));
AList := TStringList.Create;
try
AIni.ReadSectionValues('ADO', AList);
s := '';
for I := 0 to AList.Count - 1 do
s := s + AList + ';';
finally
AList.Free;
end;
ADOCon.ConnectionString := s;
ADOCon.Connected := True;
end;

附INI文件内容:

[ADO]
;SQL Server
Provider=SQLOLEDB.1
Persist Security Info=True
Initial Catalog=xxxxxdb
Data Source=
User ID=sa
Password=
Locale Identifier=2052
Connect Timeout=100
Use Procedure for Prepare=1
Auto Translate=True
Packet Size=4096
Workstation ID=
 
你可以用这样的方法来创建一个连接字符串。
str:=ADODB.PromptDataSource(0,'');
这个Str就是你的ConnectionString了,把它保存到Ini文件中,你下次就可以利用它直接连接数据库了。
 
其实最简单应该是将参数存放到*.TXT文件中.但还要存放密码.
 
读取INI,下面的例子或许对你有帮助,我连的是SQL,
ini文件中这样
[database]
Provider=SQLOLEDB.1
Persist Security Info=False
username=sa
databasename=rsgl
servername=jw


procedure Trsgl_login.FormActivate(Sender: TObject);
var i:integer;
ini: TIniFile;
ServerName,S1: string;
UserName, PWD: string;
DatabaseName1:string;
lj:string;
begin
lj:=ExtractFilePath(paramstr(0))+'lmd.ini';
ini := TIniFile.Create(lj);
try
UserName := ini.ReadString('Database', 'UserName', '');
Pwd := ini.ReadString('Database', 'Password', '');
ServerName := ini.ReadString('Database', 'ServerName', '');
DatabaseName1:=ini.ReadString('Database','DatabaseName','');
finally
ini.Free;
end;
rsgl_data.rsgl_connect.Connected := false;
try

S1:='Provider=SQLOLEDB.1;'+
'Password='+PWD+';'+
'Persist Security Info=False;'+
'User ID='+UserName+';'+
'Initial Catalog='+DatabaseName1+';'+
'Data Source='+ServerName+';';
rsgl_data.rsgl_connect.ConnectionString:=S1;
rsgl_data.rsgl_connect.Connected := true;
except
showmessage('连接数据库服务器异常!');
//弹出修改参数窗口
cs_xg.showmodal;
end;


end;
 
谢谢各位大侠!
不知在哪个窗体的事件中写连接程序最好?
 
好东西,谢谢!
 
一般有单独的登录窗体
在登录窗体处理连接、登录等事件
然后将登录的结果作为模块参数返回
 
我一般在登录窗体的FormActivate事件中写
 
我刚做的代码

procedure TMainForm.FormActivate(Sender: TObject);
var
LogIp:string;
LogUser:string;
LogPass:string;
FileName:string;
ChkLogin:TChkLogin;
begin
CutDir.Caption:=GetCurrentDir;
Filename:=CutDir.Caption+'/info.ini';
{检测info.ini是否存在,不存在则程序终止运行}
if FileExists(Filename)=false then
begin
ShowMessage('系统配置文件丢失,程序无法运行!');
close;
exit;
end;
{读取ini文件中的数据库连接信息}
myinifile:=Tinifile.Create(filename);
LogIp:= DencryptString(myinifile.readstring('服务器设置','loginIP','127.0.0.1'));
LogUser:= DencryptString(myinifile.readstring('服务器设置','loginuser','Mobile'));
LogPass:= DencryptString(myinifile.readstring('服务器设置','loginpass','168'));
{测试连接数据库}
try
begin
Data.DataLink.Connected:=false;
Data.DataLink.ConnectionString:='Provider=SQLOLEDB.1;Password='+LogPass+';Persist Security Info=True;User ID='+LogUser+';Initial Catalog=Mobile;Data Source='+LogIp;
Data.DataLink.Connected:=true;
end;
except
begin
ChkLogin:=TChkLogin.Create(Application);
ChkLogin.ShowModal;
end;
end;

ini文件内容如下 具体内容是加密过的!
[服务器设置]
loginIP=3132372E302E302E31
loginuser=6C696E7973
loginpass=313233343536
 
linys99,我也推荐,我也是这样做的,但是我写的模块多些,主要为了方便,存储使用文件INI的时候,记得要加密,不加密还是不好。。
 
不错,我也这么做
 
多人接受答案了。
 

Similar threads

回复
0
查看
827
不得闲
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
顶部