将数据库配置保存在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

解决方案 »

  1.   

    基本上就是标注红色的地方出现问题,但是在form中使用ADOConnection链接时,测试链接时成功的,不知写成字符串就出现问题,请高手指点
      

  2.   

    function LinkDBManager.getConnStr:String;
    这个方法是怎么声明的?如果是对象方法, 应该先实例化LinkDBManager示例如下:
    var
      vLinkDBM : LinkDBManager;
    begin
      vLinkDBM := LinkDBManager.create;
      vLinkDBM.getConnStr 
    end;
      

  3.   

    将readParam函数中的所有OUT改为VAR
      

  4.   

    问题已经解决,是因为ADOQuery多次链接的问题导致,还是很感谢各位的帮助