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秒的时间才执行完毕,这是为什么???
...全文
66 点赞 收藏 11
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
-狙击手- 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属性试试。
回复
发动态
发帖子
应用实例
创建于2007-09-28

2.7w+

社区成员

MS-SQL Server 应用实例
申请成为版主
社区公告
暂无公告