各位高手如何用ADOConnection连接多个数据库?ADOConnection组件有个ConnectionString的属性,但不能给它赋值呀!请高手执教!!!!

解决方案 »

  1.   

    function GetConnectionString: string;
    var
      SYSINI: TINIFile;
      ServerName, UserName, Password, tmpstr: string;
    begin
      SYSINI := TIniFile.Create(ExtractFilePath(Application.ExeName)+'DB.INI');
      try
        ServerName := SYSINI.ReadString('Database', 'ServerName', '');
        UserName := SYSINI.ReadString('Database', 'UserName', '');
        tmpstr := SYSINI.ReadString('Database', 'Password', '');
        Password := Decrypt(tmpstr, '');
        Result := '';
        Result := 'Provider=OraOLEDB.Oracle.1;Password=' + Password + ';Persist Security Info=True;User ID=' + UserName + ';Data Source='+ServerName+';Extended Properties=""';
      finally
        SYSINI.Free;
      end;
    end;
    上面是我的方法,我把connectionstring需要的内容写到db.ini这个配置文件中,需要的时候再从文件中读取出来,动态配置adoconnection;
    函数的调用 :
     begin
        Application.CreateForm(TDataModule1, DataModule1);
      DataModule1.ADOConnection1.Connected:= false;
        try
          DataModule1.ADOConnection1.ConnectionString:= GetConnectionString;
          DataModule1.ADOConnection1.Connected:= true;
        except
          MessageBox(Application.Handle,'数据库初始化设置错误,请与系统管理员联系!','错误',MB_OK OR MB_ICONSTOP);
          Exit;
        end;
        Application.CreateForm(TMainform, Mainform);
        Application.Run;
      end;
      

  2.   

    AdoConnection的conntionstring属性
    需要AdoConnection.Close之后才可以赋值的
    你可以使用多个AdoConnection呀!
      

  3.   

    各位大侠,我用的是ACCESS数据库,我这写的
    我给ADOConnection1.ConnectionString:=ConnectionString1+ConnectionString2+ConnectionString3+ConnectionString4+ConnectionString5;
    (ConnectionString1:='Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;'+'Data Source=C:\Job1\'+Project_name+'.mdb';
                                                      ConnectionString2:='Mode:=ReadWrite;Extended Properties:="";Persist Security Info:=False;Jet OLEDB:System database:="";';
                                                      ConnectionString3:='Jet OLEDB:Registry Path:="";Jet OLEDB:Database Password:="";Jet OLEDB:Engine Type:=4;Jet OLEDB:Database Locking Mode:=0;Jet OLEDB:Global Partial Bulk Ops:=2;';
                                                      ConnectionString4:='Jet OLEDB:Global Bulk Transactions:=1;Jet OLEDB:New Database Password:="";Jet OLEDB:Create System Database:=False;Jet OLEDB:Encrypt Database:=False;';
                                                      ConnectionString5:='Jet OLEDB:Don'+'+'''+'t Copy Locale on Compact:=False;Jet OLEDB:Compact Without Replica Repair:=False;Jet OLEDB:SFP:=False';
    )也就是我把连接给分开了,调试通过了。但一用到备份的数据库就有个错误:找不D到可安装的ISAM 。
      

  4.   

    不明白你的做法。
    不过我想你知道你有没有测试这一个连接呢?如果测试了能够成功的话应该是其它的问题不是connectionstring的问题吧。我个人也是把connection分开
    使用的,因为如果单独这样用的话好象会超过255个限制,也不知道是什么原因。
      

  5.   

    现存几个datalink.udl,然后运行时动态更改connectionstring:='file name=datalink.udl';
      

  6.   

    ADOConnection.ConnectionString是可以给它赋值的呀。
    不过赋值完成以后,还要把ADOConnection.Connected:=True才行。
      

  7.   

    phy(我希望我是高手,却怎么学都是菜鸟。)就是你说的,没办法测试的,我要用一个ADOConnection连接不同的数据库。这就是我的要求,我看了楼上几个朋友的留言,我感觉我做的和他们的道理是一样的,但编译通过了,程序出错,错误信息:“找不到可安装的ISAM ”那位高手知道给我个提示谢谢了