【发布时间】:2018-01-25 08:58:09
【问题描述】:
这里已经有很多类似的问题,但不幸的是,到目前为止,没有一个能解决我的问题。
我无法将 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
感谢您的帮助,谢谢。
【问题讨论】:
-
对于没有绑定变量的简单sql查询,而不是
prepare,试试query.exec("SELECT * FROM data1") -
感谢您的建议。我刚刚弄清楚出了什么问题:我一直在使用带有 sqlite3 驱动程序的 sqlite2 数据库......