我用的是DELPHI+ADO+SQL的三层结构,客户端使用TSimpleObjectBroker来提供容错和简单的装载平衡,动态配置2个中间件服务器地址(用IP)。在Internet上使用。
现在采用了李维书上的容错技术:
try
sktcnt.Connected:=false;
link_sob.SetConnectStatus(sktcnt.Address,false);
finally
try
addr_tmp:=link_sob.GetComputerForProgID(sktcnt.host);
sktcnt.Address:=addr_tmp;
sktcnt.Connected:=true;
result:=true;
except
result:=false;
MessageDlg('没有服务器可以使用! ',mtWarning,[mbOk],0);
end;
end;
在应用更新或调用服务器方法时都可以正确转到另一服务器上正确执行,但转换到另一服务器后,没有打开过的Tclientdataset可以检索到正确的数据(用Commandtext),而原来打开过的Tclientdataset则在重新执行检索后取不到数据。
还有我的Tclientdataset的FetchOnDemand都是false,Packetrecords是-1。
有谁碰到过这样的问题吗???
分可以加。
现在采用了李维书上的容错技术:
try
sktcnt.Connected:=false;
link_sob.SetConnectStatus(sktcnt.Address,false);
finally
try
addr_tmp:=link_sob.GetComputerForProgID(sktcnt.host);
sktcnt.Address:=addr_tmp;
sktcnt.Connected:=true;
result:=true;
except
result:=false;
MessageDlg('没有服务器可以使用! ',mtWarning,[mbOk],0);
end;
end;
在应用更新或调用服务器方法时都可以正确转到另一服务器上正确执行,但转换到另一服务器后,没有打开过的Tclientdataset可以检索到正确的数据(用Commandtext),而原来打开过的Tclientdataset则在重新执行检索后取不到数据。
还有我的Tclientdataset的FetchOnDemand都是false,Packetrecords是-1。
有谁碰到过这样的问题吗???
分可以加。
解决方案 »
- 用同样的SQL语句,在SQL PLUS里可以操作,但在delphi里却要报错。这是为什么?
- To 时间问题.
- 数据接口通讯寻方案?
- 【紧急求助】 用DELPHI 做的 DLL 返回 PCHAR 类型,返回值一长就会出错,请教如何解决? 100酬谢!
- 怎么响应回车事件,(急)
- adotable中有没有类似findkey 的方法/
- could not create outputfile'....\dcu\Fr_dset.dcu:求求各位拉!
- 问一个小问题:有关clientdataset
- 怎样得到计算机的注册信息?
- 谁知道有什么API函数可以把文件转换为postscript文件阿?
- select size from biolife.db 然后提示Invalid use of keyword,应该怎样写sql语句
- 在http://www.2ccc.com/article.asp?articleid=1159新加窗口
如果算的话,那我们做的任何用ADO连接数据库的软件都是三层的了?
最好用硬件的双机集群,不用编程,效率很好。
另外请问,你所谓的三层结构:应该是delphi+中间件+ 数据库服务器吧?
客户端+服务端+数据库 这算不算三层体系呢!
请指教!
再声明一下:客户端(SOCKET)+服务端(RDM+BORLAND SOCKET SERVER)+数据库(SQL2K)
try
with dm.tmp_cds do begin
close;
commandtext:=s;
open;
end;
except
if dm.CheckConnectionState then //判断并更换服务器
with dm.tmp_cds do begin
close;
commandtext:=s;
open;
end;
end;如果该控件原先没执行过,在OPEN里触发异常,在服务器更换的状态下,可以取得数据;
如果该控件原先已经执行过,在CLOSE里触发异常,在服务器更换的状态下,不能取得数据;
请帮我看看这样调用有没有问题