adoEOF判断,怎么会返回很慢

keyou 2009-04-01 05:41:51
我用多线程操作数据库,每个线程使用一个ADO连接,每个ADO可能会同时查询很多表,我用_RecordsetPtr打开一个记录集,然后如下读取数据:
1、...
2、while( true )
3、{
4、 DWORD dwLastTi=GetTickCount();
5、 if( ! rst->adoEOF ) break;
6、 DWORD dwSpan = GetTickcount()- dwLastTi;
7、 ...
8、 rst->MoveNext();
9、}
10、...
可是第5行的rst->adoEOF偶尔要花9秒的时间才执行完毕,这是为什么???
...全文
122 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
-狙击手- 2009-04-02
  • 打赏
  • 举报
回复
while(!rst->adoEOF)
{

4、 DWORD dwLastTi=GetTickCount();
6、 DWORD dwSpan = GetTickcount()- dwLastTi;
7、 ...
8、 rst->MoveNext();
}
keyou 2009-04-02
  • 打赏
  • 举报
回复
我用多线程操作数据库,每个线程使用一个ADO连接,每个ADO可能会同时查询很多表,我用_RecordsetPtr打开一个记录集,然后如下读取数据:
1、...
2、while( true )
3、{
4、 DWORD dwLastTi=GetTickCount();
5、 if( rst->adoEOF ) break;
6、 DWORD dwSpan = GetTickcount()- dwLastTi;
7、 ...
8、 rst->MoveNext();
9、}
10、...
可是第5行的rst->adoEOF偶尔要花9秒的时间才执行完毕,这是为什么???

=============================================================================
不好意思,我是凭印象写的,是写错了,改正!!!!!

回1楼的sdhdy:表在查询时不会更新
ai_li7758521 2009-04-01
  • 打赏
  • 举报
回复
while(rst->adoEOF)
  • 打赏
  • 举报
回复
if( ! rst->adoEOF ) break;

放到while里面来进行循环
you_tube 2009-04-01
  • 打赏
  • 举报
回复
while(!rst->adoEOF)
htl258_Tony 2009-04-01
  • 打赏
  • 举报
回复
帮顶.
ws_hgo 2009-04-01
  • 打赏
  • 举报
回复
关注..
Garnett_KG 2009-04-01
  • 打赏
  • 举报
回复
另,线程之间有同步代码吗?
Garnett_KG 2009-04-01
  • 打赏
  • 举报
回复
4、 DWORD dwLastTi=GetTickCount();
5、 if( ! rst->adoEOF ) break;
6、 DWORD dwSpan = GetTickcount()- dwLastTi;

===>

应该是 if(rst->adoEOF) break吧。
claro 2009-04-01
  • 打赏
  • 举报
回复
帮顶。
sdhdy 2009-04-01
  • 打赏
  • 举报
回复
你读的那个表会不断更新数据吗?你那个recordset没用一个静态的或Read_Only、 Fast_Forward属性试试。

27,582

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧