繁体   English   中英

可以在C ++平台上使用ADO来查询一系列记录吗? 例如,每个查询100条记录?

[英]Can ADO on C++ platform be used to query a range of records? E.g. 100 records per query?

我正在使用ADO的c ++连接到mySql数据库,并且正在使用标准ADO / C ++方法创建到mySql数据库的连接,而recordset是指向检索到的第一条记录的指针

_RecordsetPtr recordset;
recordset->Open("Select * from table",p_connection_.GetInterfacePtr(),adOpenForwardOnly,adLockReadOnly,adCmdText);  

我担心的是,如果表包含太多记录,并且查询所有记录,它将消耗大量内存吗?

我只想每次检索100条记录并进行处理。 可能吗? 该表不包含ID或索引作为其属性,因此“从ID> = 1且ID <= 100的表中选择*”不起作用。

您将要在查询上使用限制并循环浏览它们。

//SELECT * FROM table LIMIT 0 OFFSET 100

int tlimit, blimit;
std::string query;
std::stringstream sstm;
_RecordsetPtr recordset, count;

count->Open("SELECT COUNT(*) FROM table",p_connection_.GetInterfacePtr(),adOpenForwardOnly,adLockReadOnly,adCmdText);

for(int i = 0; i < count/100 + 1; i++)
{
   tlimit = 100 * i + 100;
   blimit = 100 * i;

   sstm << "SELECT * FROM table LIMIT " << blimit << " OFFSET " << tlimit;
   query = sstm.str();

   recordset->Open(query,p_connection_.GetInterfacePtr(),adOpenForwardOnly,adLockReadOnly,adCmdText);

   //suggest passing the recordset to a function to do what ever you want with it here
}

请注意,如果不使用从1开始记录的数据库,则必须稍微修改该算法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM