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

Qt5: Sql queries failing and tables not shown

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

我无法将 Qt 连接到一个简单的 sqlite 数据库。可以建立连接,但查询失败 No query Unable to fetch row and db.tables() returns me no 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

我的数据库应该有一个 table (data1)。手动执行查询 returns 这个:

感谢任何帮助,谢谢。

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

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