c++ - Qt SQLite 无法执行 Select 查询

标签 c++ database qt sqlite

我知道围绕我遇到的问题提出了很多问题,我花了很多时间尝试实现各种解决方案但没有帮助。

我正在尝试使用 Qt SQLite 平台读取 .db 文件。 Windows 8 Qt 5.3.2

在 SQLite 的数据库浏览器中打开数据库文件并成功执行我的简单查询:

SELECT Name FROM Person ORDER BY Name

并且在输出中有一个包含 10 行的列表。

我想把它扔给 Qt。我的代码:

QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("C:\mydb.db");
if(db.open())
{
    QSqlQuery qry(db);
    if(qry.exec("SELECT Name FROM Person ORDER BY Name"))
    {
        while(qry.next())
        {
           //some code
        }
    }

     QSqlError e;
     QString s,d;
     e = qry.lastError();
     s = e.databaseText();
     d = e.driverText();
}

此代码失败,qry.exec 命令返回 false,最后一个错误是“没有这样的表;人”

运行命令:QStringList tables = db.tables(QSql::AllTables); 数据库打开后显示数据库中有一张表名为:sqlite_master。 尝试用以下查询替换 exec 命令中的查询:"SELECT tbl_name FROM sqlite_master WHERE type = 'table'" 如在:http://www.sqlite.org/faq.html#q7 导致 exec 命令返回 true 但 qry.next() 已经从第一次迭代返回 false,尽管我的数据库中有 5 个表。

我会很高兴我能解决我的问题!

谢谢!!!

最佳答案

您应该正确指定数据库文件的路径。您应该使用 C:\\mydb.dbC:/mydb.db 而不是 C:\mydb.db

这是因为编译器使用 \ 作为字符串中的转义字符(例如 \t\n\r).所以\\实际上变成了\

关于c++ - Qt SQLite 无法执行 Select 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28303796/

相关文章:

C++ 类函数别名

c++ - 使用处理 IO 队列的线程提升线程池

python - 从我的 Django 应用程序中的数据库中选择数据

c++ - QTcpSocket真的是全双工吗?

c++ - 通过ODBC创建数据库

C++ 日历,在我看到输出之前关闭

javascript - 如下所示的这段 php 代码有什么问题?

PHP/MySQL - 比较 2 个不同数据库中的表

c++ - 如何从 QFileSystemWatcher `directoryChanged` 事件中获取更改的文件名

Qt Creator 部署到 Windows 设置图标