我的问题是这样的:
我有一个MIDAS的程序,采用SocketConnection连接,数据库采用 SQL SERVER,我想让中间层可以动态的连接到一个数据库,这样的话就要动态的指定ADOConnection的ConnectString的值,这个我已经实现了,现在的问题是,我的客户端每次访问数据库的时候都不能通过验证,我在想是不是因为RemotDataModule每次有用户连接的时候都会生成一个新的实例,而设计期间的ConnectString的值都是空的造成的呢?因为如果我在设计的时候指定了这个值就不会有问题。我应该怎么做呢???
我有一个MIDAS的程序,采用SocketConnection连接,数据库采用 SQL SERVER,我想让中间层可以动态的连接到一个数据库,这样的话就要动态的指定ADOConnection的ConnectString的值,这个我已经实现了,现在的问题是,我的客户端每次访问数据库的时候都不能通过验证,我在想是不是因为RemotDataModule每次有用户连接的时候都会生成一个新的实例,而设计期间的ConnectString的值都是空的造成的呢?因为如果我在设计的时候指定了这个值就不会有问题。我应该怎么做呢???
也許 在應用程序服務器端adoconnection就沒有訪問數據庫的權限﹐(也許是你的connectionstring)
寫得有問題使adoconnection沒有訪問數據庫得權限﹐比如各個數據庫的用戶和密碼不正確等等。并不一定在課戶端的問題。你可以先測試一下你寫的connectionstring能不能連接到數據庫。
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;
看是不是这个意思哦!反正我是实现了的,动态就是创建一个再指定值就好了啊!