以下是CRecordset类继承类中函数的代码。CString strSQL;
for(int groundType; groundType<100; groundType++)
{
strSQL.Format("select * from radartest1 where GroundTypes=%d ORDER BY Distance", groundType,);
Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);
//数据处理
Close();
}
Open()需近2秒的时间才能返回,可能跟我要取的数据量有关。但这样一来整个循环的执行时间就无法接受。
刚刚结束数据库编程,不知道这样的结构是不是合理?现在是groundType变化一次,就Open一次。
如何缩短查询数据库的时间呢?
用ADO可以获得更多的控制,在这个效率方面是不是也有优势?
大家帮忙啊,急需解决哪
for(int groundType; groundType<100; groundType++)
{
strSQL.Format("select * from radartest1 where GroundTypes=%d ORDER BY Distance", groundType,);
Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);
//数据处理
Close();
}
Open()需近2秒的时间才能返回,可能跟我要取的数据量有关。但这样一来整个循环的执行时间就无法接受。
刚刚结束数据库编程,不知道这样的结构是不是合理?现在是groundType变化一次,就Open一次。
如何缩短查询数据库的时间呢?
用ADO可以获得更多的控制,在这个效率方面是不是也有优势?
大家帮忙啊,急需解决哪
是不是先用Open打开(一次),然后用设置m_strFilter和m_strSort,用Requery()多次查询?感觉差不多啊?
学习!!!
CStirng strSQL
CRecordSet m_pSet;
strSQL = _T("select * from radartest1 where GroundTypes<100 ORDER BY Distance");
m_pSet.MoveFirest();
while(!m_pSet.IsEOF())
{
pSet.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);
//循环进行数据处理
pSet.MoveNext();
}
pSet.Close();
CStirng strSQL
CRecordSet m_pSet;
strSQL = _T("select * from radartest1 where GroundTypes<100 ORDER BY Distance");
pSet.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);
while(!m_pSet.IsEOF())
{
//循环进行数据处理
pSet.MoveNext();
}
pSet.Close();
CStirng strSQL
CRecordSet m_pSet;
strSQL = _T("select * from radartest1 where GroundTypes<100 AND Dive<10.0 ORDER BY Distance");
pSet.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);
while(!m_pSet.IsEOF())
{
//循环进行数据处理
pSet.MoveNext();
}
pSet.Close();为什么这样会出错呢?GroundTypes 和Dive都是一样的索引值啊。解决这个问题后立马散分
我用SQL Server2000的查询分析器执行是成功的,但
同样的语句在Vc++ 下就不行。
可能问题本身很简单,实乃刚接触,又没时间去查资料,只好来这里求助了。先谢谢各位了。
在执行Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);后
所有的记录集结果是不是已经传到了本地机上?
还是每次通过"MoveNext();"语句把记录集从远端服务器传过来的么?
测试下来执行MoveNext();耗时1ms左右???