我在一系统中用的都是Datamodule中的一同一个ADOconnection,现在想在一页面中用一按钮来更换Adoconnection所连接的数据库,用的是以下语句,可是点击按钮后,没有任何反应,连接字符串也没有改变,请问哪位知道为什么,如果要更新的话应该怎么写才能使其当时就换连接别的数据库?
if datamodule9.ADOConnection1.Connected then
         begin
         datamodule9.ADOConnection1.Connected:=false;
         str4:='Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=user012003;';
         str5:='Data Source=YYY;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=YYY;Use Encryption for Data=False;Tag with column collation when possible=False';
         datamodule9.ADOConnection1.ConnectionString:=str4+str5;
         datamodule9.ADOConnection1.Connected:=true;
         showmessage(str4+str5);
         end;

解决方案 »

  1.   

    我试了一下你的代码在Connected为true时没有问题,在执行这段代码前你要确信你的connected为true.
      

  2.   

    是的,我在登陆页面中就是用上面的方法把一个字符串付给connectionstring的,最后一句语就是datamodule9.ADOConnection1.Connected:=true;
    我现在就是不知道是不是在连接上一个数据库的时候换连接了别的数据库是不是不用重新登陆就能显示所连接数据库的内容?
      

  3.   

    我以前写了一个连接函数,你看能不能参考:
    Procedure TFrm1.ConnectDatabase(ServerName:string);
    var ConStr:string;
        FileIni:TIniFile;
    Begin
      FileIni:=TIniFile.Create(CONFILE);
      With FileIni do
      begin
        ConStr:=ReadString(DBLOCK,CONNECTSTR,'');
        free;
      end;
      if trim(ConStr)='' then
        ConStr:='Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial '
                +'Catalog=master'+';Data Source='+ServerName
                +';Connect Timeout=15;Use Procedure for Prepare=1;'
                +'Auto Translate=True;Packet Size=4096'
      else
        ConStr:=Copy(ConStr,1,pos('Initial Catalog=',Constr)+15)+'Master'+
                Copy(ConStr,pos(';Data Source=',Constr),length(Constr));
      Sys_Connect.connected:=False;
      Sys_Connect.ConnectionString :=ConStr;
      try
        application.ProcessMessages;
        screen.Cursor :=crSQLWait;
        Sys_Connect.Connected :=True;
        screen.Cursor :=crdefault;
      except
        application.MessageBox('连接失败!',MB_OK+MB_ICONSTOP);
        abort;
      end;
    end;
      

  4.   

    str4:='Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=user012003;'
    中没有说明密码,所以对于有密码的sql则你需要加入密码
    str4:='Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;password=mypass;Initial Catalog=user012003;'