【问题标题】:Qt SQLite can't perform Select querysQt SQLite 无法执行选择查询
【发布时间】:2015-02-03 16:22:19
【问题描述】:

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

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

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

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,最后一个错误是"no such table; person"

运行命令: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.db 而不是C:\mydb.db
  • 非常感谢!我不能放过它!!!我添加了,现在它可以工作了:),我在 Qt 方面有一些经验,曾经把斜线加倍,但现在没有注意。难以置信,我花了一天的时间来解决它!

标签: c++ database qt sqlite


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多