使用 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 数据库中获取数据的主要内容,如果未能解决你的问题,请参考以下文章

使用函数从sqlite数据库中获取指定数据?

需要帮助从 SQLite 数据库中获取数据

在 Iphone 中使用 Core Data 从 SQLite 数据库中获取主键值

如何使用 SQLite 从数据库表中获取一个字段?

如何在 QT C++ 中从表的列中获取 SQL 中的所有值

模板未显示通过传递参数使用视图函数从 sqlite 获取的数据(为空白)