这里有很多类似的问题,但不幸的是,到目前为止还没有解决我的问题。
我很难将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
感谢任何帮助,谢谢。
答案 0 :(得分:1)
这是一个非常愚蠢的错误。
我使用的是使用sqlite mydb
创建的sqlite2数据库,而QSQLITE
是sqlite3的驱动程序(使用sqlite3 mydb
)。