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
)。
这里已经有很多类似的问题,但不幸的是,到目前为止,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
)。