求救高手---adoconnection自动断线(100)

  • 主题发起人 主题发起人 海沙520
  • 开始时间 开始时间
谢谢大家的支持,请再帮忙想想办法,我无从下手了程序用的是Delphi 7.0 用的是 MDI 框架大概有100个 MDIChild 窗口, 每个Child窗口上大概有 4 个 AdoQuery,所有的Adoquery都是连接 DataModule 里的一个 AdoConnection ,所有的Adoquery都是拖放在窗体上的,没有动态创建, 所有客户端都是通过 TCP/IP 连接,SQL Server的查询超时设置的是 0, 登陆超时为 60
 
另外服务器是双CPU, 双网卡,做了网桥以前用的服务器是单CPU,单网卡。有出现过类似问题,不过没有这么频繁。现在由于一些原因,我不好换服务器测试,所以只能从设置和程序代码上来查找问题了
 
没遇到过,如果连接字符串写死在Connection控件中,就算Connection.Active=false,一有Query执行它也会自动Active的,不知道写死行不行?另外ConnectionString中是否有超时设置?
 
adoconnection的 Keepconnection属性要设为false才行。
 
To david_jkl 为什么要把adoconnection.keepconnection设为 false? 我就是想让它一直保持连接,因为程序一但打开,就至少会用6个小时以上
 
Use KeepConnection to specify whether an application remains connected to a database even if no associated dataset components are currently active. When KeepConnection is true (the default) the connection is maintained. For connections to remote database servers, or for applications that frequently open and close datasets, set KeepConnection to true to reduce network traffic, speed up applications, and avoid logging in to the server each time the connection is reestablished. When KeepConnection is false a connection is dropped when there are no open datasets. Dropping a connection releases system resources allocated to the connection, but if a dataset is later opened that uses the database, the connection must be reestablished and initialized.
 
创业团队招聘Delphi开发工程师学历大学专科以上,计算机相关专业编成工作经验一年以上要求有delphi编程经验,熟悉计算数学算法熟悉MSSQL数据库 熟练运用语法熟悉 HTML 居住地上海工资待遇3000-5000元 有意者请联系:QQ381217003
 
To xs-sky 不厚道啊,我这是问题贴,不是招聘贴啊,晕
 
哎,一周过去了,问题还没有解决
 
可以曲线救国一下么,你希望ado一直保持连接,这样就可以方便的随时往服务器读写数据,既然目前代码上做不到,那么就索性断开数据库连接,在需要读写的时候先connect一下,用完就disconnect,起码程序不会死了。
 
我们也遇到同样的问题,大家一起研究呀
 
自动连接,每次使用之前先连接,这样我都做了,都没用有时刚好在一个dbgrid中编辑的时候,就会断线了,或者刚好已经查询出数据在dbgrid中显示的时候,也会断线,这样dbgrid就会没有数据显示,然后提示出错.过段时间就算程序自动再连接成功,dbgrid中也还是没有数据显示,而且提示: ado_s02: Cannot perform this operation on a closed dataset.
 
我的意思是:数据取到前台操作,读写都由代码控制,平时断开连接,需要往数据库读写时再连接上,读写数据,完成后再断开,难不成,断开连接,再连接也会报错?可以用adoquery建立内存表,从服务器读取的数据存在内存表中,dbgrid之类的数据敏感控件就和内存表关联,需要保存时再从内存表写到服务器上。
 
To FreeAndNil 呵呵,郁闷的是,断开再连接,真的有时也会出错. 全部改成内存表,我的工作理也太大了,100张表的数据读写操作.那也改多久哟. 我想把数据库挂到另一台服务器上去,我怀疑是服务器的问题.
 
哎,真郁闷啊,我换了一台服务器,这个问题就解决了.现在没有一点问题了.现在用的服务器: CPU: Intel 2.53G 内存:2G OS : windows 2000 Server (Service Pack 4) 单网卡 这台电脑只运行我这一个程序以前出问题的服务器: CPU : Intel Xeon E5440 2.83G 内存:6 G OS : windows server 2003 R2 (Service Pack 2) 双网卡做了网桥 这台电脑上有金碟的K3, 还有一个自己VB写的采购软件,再加我的这个软件 而且这台电脑操作系统被他人安装好的时候,授权用户只设置了10(后来被我修改) 而SQL Server的授权用户只设置了50(后来被我修改) 我还是不明白是哪个地方出的问题,是ADO在双CPU上有问题?还是和其它软件有冲突?还是服务器本身的系统有问题?我不知道那样修改,重新启运以后,是否没有问题?
 
应该是服务器的问题,跟ADO本身没有关系的,有很多应用的软件也是用ADO的,人家也没有出现这个问题啦! 可能是服务器网络或机器不稳定,导致网络断线,所以出现这样的问题
 
www.greaterware.cngw组件已经解决这个问题。
 
谢谢大家了,结贴了.
 
再次谢谢大家
 
我怎么结不了贴啊?分怎么还没给出去
 
后退
顶部