Qt5:Sql查询失败,表格未显示

时间:2018-01-25 08:58:10

标签: sql qt sqlite qt5 qtsql

这里有很多类似的问题,但不幸的是,到目前为止还没有解决我的问题。

我很难将Qt连接到一个简单的sqlite数据库。可以建立连接,但查询失败,No query Unable to fetch row并且db.tables()不返回任何表格。

我的代码如下:

void DBManager::connOpen()
{
    m_db = QSqlDatabase::addDatabase("QSQLITE");
    m_db.setDatabaseName(m_db_path);
    m_db.open();

    if (!m_db.open())
    {
        qDebug("Error: Connection to database failed.");
    }
    else
    {
        qDebug("Connection to database established.");
        QSqlQuery query(m_db);
        query.prepare("SELECT * FROM data1");
        if (!query.exec())
        {
            std::cout << query.lastError().text().toStdString() << std::endl;
            std::cout << query.executedQuery().toStdString() << std::endl;
        }
        while (query.next())
        {
            std::cout << query.value("id").toString().toStdString() << ". " << query.value("one").toString().toStdString() <<  std::endl;
        }

        QSqlDriver *driver = m_db.driver();
        QStringList tables = m_db.tables();
        std::cout << "tables found: " << tables.count() << std::endl;
        for(QString table: tables)
        {
            QSqlRecord record = driver->record(table);
            std::cout << "name: " << table.toStdString() << std::endl;
            std::cout << "count: " << record.count() << std::endl;
            std::cout << record.fieldName(0).toStdString() << std::endl;
        }
    }
}

这导致控制台输出如下:

Connection to database established. No query Unable to fetch row SELECT * FROM data1 tables found: 0

我的数据库应该有一个表(data1)。手动执行查询返回: executing query in console

感谢任何帮助,谢谢。

1 个答案:

答案 0 :(得分:1)

这是一个非常愚蠢的错误。

我使用的是使用sqlite mydb创建的sqlite2数据库,而QSQLITE是sqlite3的驱动程序(使用sqlite3 mydb)。