使用 qt 从 sqlite 数据库中获取数据
Posted
技术标签:
【中文标题】使用 qt 从 sqlite 数据库中获取数据【英文标题】:Get data from sqlite database using qt 【发布时间】:2019-01-07 08:32:04 【问题描述】:我想从 sqlite 数据库中获取数据,我使用此代码它仅适用于小行,但是当尝试像 300000 这样的大数据时它不起作用 代码:
QString serVal = "searchItem";
QSqlQuery qry;
qry.exec("select * from myTable");
while (qry.next())
if(serVal == qry.value("myCol1").toString())
qDebug () << qry.value("myCol2").toString();
qDebug () << qry.value("myCol5").toString();
qDebug () << qry.value("myCol8").toString();
break;
【问题讨论】:
“它不起作用”不是有用的错误描述。如果您期望如此大的查询结果,您也应该使用 select ... from ... limit NNNN。 问题是程序停止加载并退出,但是如果用于小数据它可以正常加载,请您解释一下select ... from ...限制NNNN如何使用它。 qry.exec("select * from myTable where serVal = 'searchItem' ");可能是一个更好的查询。它会减少匹配的记录。 还可以在执行查询之前尝试添加qry.setForwardOnly(true);
。可能是make a difference.
@TrebuchetMS 感谢它的工作
【参考方案1】:
像这样使用 QSqlQueryModel 而不是 QSqlQuery:
QSqlQueryModel queryModel;
queryModel->setQuery("select * from myTable");
while (queryModel.canFetchMore())
queryModel.fetchMore();
for (int i = 0; i < queryModel.rowCount(); i++)
// Your data
【讨论】:
什么等价于这个:if(serVal == qry.value("myCol1").toString()) @ZoroAllam queryModel.record(i).field(1).value().toString(),以上是关于使用 qt 从 sqlite 数据库中获取数据的主要内容,如果未能解决你的问题,请参考以下文章