【问题标题】:Qt5: Sql queries failing and tables not shownQt5:Sql 查询失败且表未显示
【发布时间】:2018-01-25 08:58:09
【问题描述】:

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

我无法将 Qt 连接到一个简单的 sqlite 数据库。可以建立连接,但查询失败,No query Unable to fetch rowdb.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)。手动执行查询会返回:

感谢您的帮助,谢谢。

【问题讨论】:

  • 对于没有绑定变量的简单sql查询,而不是prepare,试试query.exec("SELECT * FROM data1")
  • 感谢您的建议。我刚刚弄清楚出了什么问题:我一直在使用带有 sqlite3 驱动程序的 sqlite2 数据库......

标签: sql qt sqlite qt5 qtsql


【解决方案1】:

这归结为一个非常愚蠢的错误。

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

【讨论】:

  • 啊,我忘了那些时间限制 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-11-25
  • 2013-04-05
  • 2012-05-20
  • 2019-06-18
  • 1970-01-01
  • 2016-12-02
  • 1970-01-01
相关资源
最近更新 更多