利用ado读取数据库2000条记录,
select * from tablename
执行这样简单的语句
执行是非常快的
但是当我要遍历并取出所有记录时居然非常慢
while(!m_pRecordset->adoEOF)
{
vID = m_pRecordset->GetCollect(_variant_t((long)0));///取得第1列的值,从0开始计数,
vUsername = m_pRecordset->GetCollect("*****");
vOld = m_pRecordset->GetCollect("****");
vBirthday = m_pRecordset->GetCollect("****");
m_pRecordset->MoveNext();///移到下一条记录
}
2k条记录花费将近3~4秒
我发现是while(!m_pRecordset->adoEOF)
{
m_pRecordset->MoveNext();
}
单单是这样一个循环就花费3~4秒
是不是有什么问题呀??
如果才2~3K的记录都要花去3~4秒
那上w的记录该怎么办呀?????????
希望大家指点一下,谢谢
select * from tablename
执行这样简单的语句
执行是非常快的
但是当我要遍历并取出所有记录时居然非常慢
while(!m_pRecordset->adoEOF)
{
vID = m_pRecordset->GetCollect(_variant_t((long)0));///取得第1列的值,从0开始计数,
vUsername = m_pRecordset->GetCollect("*****");
vOld = m_pRecordset->GetCollect("****");
vBirthday = m_pRecordset->GetCollect("****");
m_pRecordset->MoveNext();///移到下一条记录
}
2k条记录花费将近3~4秒
我发现是while(!m_pRecordset->adoEOF)
{
m_pRecordset->MoveNext();
}
单单是这样一个循环就花费3~4秒
是不是有什么问题呀??
如果才2~3K的记录都要花去3~4秒
那上w的记录该怎么办呀?????????
希望大家指点一下,谢谢
另外,GetCollect反复调用,把它的参数定义成_variant_t类型的变量,避免反复构造字符串。
这种代码while(!m_pRecordset->adoEOF)
{
m_pRecordset->MoveNext();
}
按理说 1秒钟上W条记录没有任何问题
我也考虑过
问题是别人写的程序却很快
我写的就是只上面那句它就很慢
就是只运行MoveNext全部遍历一遍
不是我其他地方,我断点调试过了
感谢朋友