Qt SQLite可以执行Select查询

时间:2015-02-03 16:22:20

标签: c++ database qt sqlite

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

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

在SQL浏览器中为SQLite打开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,最后一个错误是“没有这样的表;人”

运行命令: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个表。

如果能解决我的问题,我会非常满意!

感谢!!!

1 个答案:

答案 0 :(得分:1)

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

而不是C:/mydb.db

这是因为编译器使用\作为字符串中的转义字符(适用于\t\n\r等内容。所以\\实际上变成了\