我的问题是这样的:
   我有一个MIDAS的程序,采用SocketConnection连接,数据库采用 SQL SERVER,我想让中间层可以动态的连接到一个数据库,这样的话就要动态的指定ADOConnection的ConnectString的值,这个我已经实现了,现在的问题是,我的客户端每次访问数据库的时候都不能通过验证,我在想是不是因为RemotDataModule每次有用户连接的时候都会生成一个新的实例,而设计期间的ConnectString的值都是空的造成的呢?因为如果我在设计的时候指定了这个值就不会有问题。我应该怎么做呢???

解决方案 »

  1.   

    你動態指定ADOConnection的ConnectString的值后﹐你測試過連接成功了嗎﹖
    也許 在應用程序服務器端adoconnection就沒有訪問數據庫的權限﹐(也許是你的connectionstring)
    寫得有問題使adoconnection沒有訪問數據庫得權限﹐比如各個數據庫的用戶和密碼不正確等等。并不一定在課戶端的問題。你可以先測試一下你寫的connectionstring能不能連接到數據庫。
      

  2.   

    不是这么一回事,设计时写的connectionString是对的,但Midas应用程序服务器在有客户端访问时,自动创建实例,我应当在哪里设置connectionstring呢?
      

  3.   

    ...........................
        Edit_ser: TEdit;
        Edit_user: TEdit;
        Edit_mima: TEdit;
        Edit_sjk_name: TEdit;
        stop: TBitBtn;
        go: TBitBtn;
        ADO_C: TADOConnection;......
    procedure Tlog.FormShow(Sender: TObject);
    begin
    stop.Visible :=false;
    ado_c.Connected :=false;
    ado_c.ConnectionString :='';
    //TabSheet2.Visible :=FALSE;
    end;//-----------------------------------------------------------;
    //断开连接
    procedure Tlog.stopClick(Sender: TObject);
    begin
    go.Visible :=true;
    stop.Visible :=false;
    //////////////////////
    ado_c.Connected :=false;
    ado_c.ConnectionString:='';
    end;
    //-----------------------------------------------------------;
    //连接
    procedure Tlog.goClick(Sender: TObject);
    begin
    stop.Visible :=true;
    go.Visible :=false;
    ado_c.ConnectionString :='Provider=SQLOLEDB.1;Persist Security Info=False;User ID='+edit_user.text+';Password='+edit_mima.Text +';Initial Catalog='+Edit_sjk_name.Text +';Data Source='+Edit_ser.Text ;
    ado_c.Connected :=true;
    //TabSheet2.Visible :=true;
    end;
    看是不是这个意思哦!反正我是实现了的,动态就是创建一个再指定值就好了啊!
      

  4.   

    http://community.csdn.net/Expert/topic/4061/4061252.xml?temp=.4200556