将数据库配置保存在ini文件中,然后通过读取ini文件动态的生成链接字符串。这个方法写在unit中,作为一个引用类来使用的,当我用ADOConnection来链接字符串时就会出现问题:Access violation at address 004b76bb in module ....这个问题,代码如下:
procedure LinkDBManager.readParam(out provider:String;out security:string; out driver:string;
out server:string;out uid:string;out database:String;out port:String;out column:String);
var
FileName:String;
begin
{----------------------------数据库文件地址begin-----------------}
FileName:=ExtractFilePath(Paramstr(0))+dbName;
iniParam:=TIniFile.Create(FileName);
{----------------------------数据库文件地址end-------------------}
provider:=iniParam.ReadString('dbParam','Provider','');
security:=iniParam.ReadString('dbParam','Persist Security Info','');
driver:=iniParam.ReadString('dbParam','Driver','');
server:=iniParam.ReadString('dbParam','SERVER','');
uid:=iniParam.ReadString('dbParam','UID','');
database :=iniParam.ReadString('dbParam','DATABASE','');
port :=iniParam.ReadString('dbParam','PORT','');
column :=iniParam.ReadString('dbParam','COLUMN_SIZE_S32','');
end;function LinkDBManager.getConnStr:String;
var
provider,security,driver,server,uid,database,port,column:string;
begin
readParam( provider,security,driver,server,uid,database,port,column);
//拼接的链接数据库的字符串
result :='Provider='+abc+';password='+password+';Persist Security Info='+
server+';User ID='+user+';Initial Catalog='+local+';Data Source ='+database; end;try
ADOConnection1.ConnectionString :=getConnStr;
ADOConnection1.LoginPrompt :=false;
ADOConnection1.Connected :=true;
ADOQuery1.Connection :=ADOConnection1;
except
ShowMessage('连接错误!错误字符串为:'+getConnStr);
end;delphiodbc数据库ini
procedure LinkDBManager.readParam(out provider:String;out security:string; out driver:string;
out server:string;out uid:string;out database:String;out port:String;out column:String);
var
FileName:String;
begin
{----------------------------数据库文件地址begin-----------------}
FileName:=ExtractFilePath(Paramstr(0))+dbName;
iniParam:=TIniFile.Create(FileName);
{----------------------------数据库文件地址end-------------------}
provider:=iniParam.ReadString('dbParam','Provider','');
security:=iniParam.ReadString('dbParam','Persist Security Info','');
driver:=iniParam.ReadString('dbParam','Driver','');
server:=iniParam.ReadString('dbParam','SERVER','');
uid:=iniParam.ReadString('dbParam','UID','');
database :=iniParam.ReadString('dbParam','DATABASE','');
port :=iniParam.ReadString('dbParam','PORT','');
column :=iniParam.ReadString('dbParam','COLUMN_SIZE_S32','');
end;function LinkDBManager.getConnStr:String;
var
provider,security,driver,server,uid,database,port,column:string;
begin
readParam( provider,security,driver,server,uid,database,port,column);
//拼接的链接数据库的字符串
result :='Provider='+abc+';password='+password+';Persist Security Info='+
server+';User ID='+user+';Initial Catalog='+local+';Data Source ='+database; end;try
ADOConnection1.ConnectionString :=getConnStr;
ADOConnection1.LoginPrompt :=false;
ADOConnection1.Connected :=true;
ADOQuery1.Connection :=ADOConnection1;
except
ShowMessage('连接错误!错误字符串为:'+getConnStr);
end;delphiodbc数据库ini
这个方法是怎么声明的?如果是对象方法, 应该先实例化LinkDBManager示例如下:
var
vLinkDBM : LinkDBManager;
begin
vLinkDBM := LinkDBManager.create;
vLinkDBM.getConnStr
end;