最近做的一个项目,使用SQL Server 数据库, 数据处理使用存储过程,处理比较复杂,使用查询分析器需要2秒,结果大概5000行,10多列,使用Delphi 经常出现超时情况,写了个小程序测试了一下,只用二层直接连接数据库,也会出现这种情况,即使timeout设地再大也无济于事,很是郁闷.
后来使用JAVA JDBC连接数据库,就重来没出过这种情况,杯具 不知道大家有没有这种情况
后来使用JAVA JDBC连接数据库,就重来没出过这种情况,杯具 不知道大家有没有这种情况
调试欢乐多
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
DataSource1: TDataSource;做了这么多年了,不会阴沟翻船的,再说有时候还是可以取出数据的,程序上不会有错
2. 存储过程返回的是执行结果还是结果集,如果是结果集可能跟数据感知控件的绑定有关
3. 使用JDBC访问数据库没有问题,ADO访问肯定也没有问题
Close;
sql.Text:=Trim(Edit1.Text);
Open;
end; sql语句都是调用存储过程,与查询分析器里都是一样的
Close;
sql.clear; //加上这句
sql.Text:=Trim(Edit1.Text);
Prepared; //加上这句
Open;
end;
//还有就是楼主检查下adoquery有没有计算字段,这影响最大了。如果有的话,改成left join。
应该是代码或者是你这个存储过程使用Adoquery来处理时有问题,换存储过程控件
试一下。
很早以前就有人讨论过这个问题,
想不明白的是,既然数据库能计算出结果,为什么同样是5000行的数据,delphi客户端调用就是不一样,为什么使用java就不受影响.
使用查询分析器执行 3秒 能显示运行的记录
使用delphi 大概在点"打开"后30秒左右 显示运行的记录,期间没有任何提示,可能是监测工具只能完成查询和数据传输后才显示吧难道是编码转换的问题?
可有时也快的啊?
也不可能是服务器的性能问题,因为使用查询分析器任务时候都是需要2~3秒
ADO的貌似有的时候呵呵。
理论上是不会的,请确认
1、两种情况下数据加载到界面的方式是否相同,有没有分步读取,分页显示等处理
2、排除数据绑定控件原因
3、ADO驱动有没问题