Delphi 如何通过配置ini文件去连接SQL Delphi / Windows SDK/APIhttp://www.delphi2007.net/DelphiDB/html/delphi_20061221172852177.html
请问大家 Delphi如何通过配置ini文件去连接SQL?
大家有没相应的例子或代码?
由于是第一次接触这方面的操作,所以希望大家帮个忙.
这个首先有一个配置好的INI文件,然后在连接数据库之前读出INI文件的配置信息来连接SQL就可以了
首先你要会对INI进行处理,INI文件读写DELPHI中有一个类TIniFile,利用这个类型你就可以方便地创建及读写INI文件了.
////ini
[ServerInfo]
ServerIP=.
SQLDBName=aaaa
SQLUserID=sa
SQLPwd=sa
/////////////
var
FileName:string;
begin
FileName:=ExtractFilePath( application.ExeName)+'resource\conf.ini';
with TInifile.Create(Filename) do
begin
ServerIP:=ReadString('ServerInfo','ServerIP','');
SQLDBName:=ReadString('ServerInfo','SQLDBName','');
SQLUserName:=ReadString('ServerInfo','SQLUserID','');
SQLPwd:=ReadString('ServerInfo','SQLPwd','');
Destroy;
end;
///////////
ADOConnection1.ConnectionString:='Provider=SQLOLEDB.1;Password='+
SQLPwd+
';Persist Security Info=True;'+
'User ID='+
SQLUserName+
';Initial Catalog='+
SQLDBName+
';Data Source='+
ServerIP;
三楼的基本差不多了,不过,密码最好进行加密!这种多的是,你可以随便找的。
谢谢大家的帮忙!
三楼正解
密码要进行加密.
我找了一些关于密码加密的例子,看后总觉得有些模糊,
请问朋友们,可不可以给些相应的详细些的例子给我看看啊?
毕竟头一次接触这样的例子,还是不太明白.
三楼的ADOConnection1.ConnectionString 的这个是怎么配置的啊,我在编译的时候老是说这里错误,未定义
配置的问题搞定了,谢谢大家!
但关于加密的问题还是希望大家能给我指导一下.
我是这样想的: 先定义两个字符串key和str 作为明钥和密钥.str是key倒过来的对应的字符串.
关于对应的加密,解密代码怎么写啊?我想了这么久,还是没弄会.
加密后再如何应用到三楼的代码中去啊,希望大家指点一下,我实在弄不好了.
[039D2D4968B58091]
6294E987F260513A=93F7BB025CD2ECE209FB77C6868074E3
16CC3532BB7A98DF=198E4BB5584F94BF
E7EBACCB860DAAFE=198E4BB5584F94BF
13AE07A60EF35373=0AB3345601A7728A
这是我的配置
[039D2D4968B58091]
6294E987F260513A=93F7BB025CD2ECE209FB77C6868074E3 //服务器
16CC3532BB7A98DF=198E4BB5584F94BF //数据库名
E7EBACCB860DAAFE=198E4BB5584F94BF //用户
13AE07A60EF35373=0AB3345601A7728A //密码
可不可以给个具体的例子或算法给我啊
加密你可一左移右移什么的来实现,加密算法用别人的你放心么?????
我是用来参考啊,我现在是不知道如何着手
//db_con.ini 这是你的配置文件
[ServerInfo]
ServerIP=.
SQLDBName=aaaa
SQLUserID=sa
SQLPwd=sa
//这是你的数据库连接单元文件中有关数据库连接函数
function Get_Db_Con_Str(FileName:String):String;
var
ServerIP,SQLDBName,SQLUserName,SQLPwd:string;
begin
Result := '';
with TInifile.Create(Filename) do
begin
try
ServerIP:=ReadString('ServerInfo','ServerIP','');
SQLDBName:=ReadString('ServerInfo','SQLDBName','');
SQLUserName:=ReadString('ServerInfo','SQLUserID','');
SQLPwd:=ReadString('ServerInfo','SQLPwd','');
finally
Free;
end;
Result := 'Provider=SQLOLEDB.1;Password='+SQLPwd+';Persist Security Info=True;User ID='+SQLUserName+';Initial Catalog='+SQLDBName+';Data Source='+ServerIP;
end;
//使用
var
Ini_FileName:String;
//.....
Ini_FileName:=ExtractFilePath( application.ExeName)+'db_con.ini';
if not FileExists(Ini_FileName) then
begin
ShowMessage('数据库连接配置文件不存在!');
Application.Terimate;
end;
with ADOConnection1 do
Connection := False;
ConnectionString:=Get_Db_Con_Str(Ini_FileName);
try
Connection := True;
//.....
except
ShowMessage('数据库连接失败!请检查配置文件:'+Ini_FileName);
//....
end;
end;
给你一个简单的:
procedure TFrmSrv.BtnSaveClick(Sender: TObject);
var I:integer;
begin
Pwd:=EdtPwd.Text;
for I:=1 to length(pwd) do
begin
pwd[i]:=chr(ord(pwd[i])xor 4);
end;
myinifile:=Tinifile.Create(ExtractFilePath(paramstr(0))+'\setup.ini');
myinifile.writestring('Setup','Data_Source',EdtSrv.text);
myinifile.writestring('Setup','Initial_Catalog',EdtDB.text);
myinifile.writestring('Setup','User_ID',EdtUser.text);
myinifile.writestring('Setup','Password',Pwd);
myinifile.Free;
end;
end;
象上面的这样子保存和读取都是一样的,取的时候再进行一次就行了。ok?
哈,能直接用了