我的QT SQL select不会返回任何数据:
//connect DB
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("C:/temp/atsakymai_1.db");
if (!db.open())
{
qDebug() << "Connection error!!!";
}
QSqlQuery query;
query.prepare("SELECT * FROM transportas");
if (!query.exec())
{
qDebug() << "SQL error: "<< query.lastError().text() << endl;
}
qDebug() << query.executedQuery();
qDebug() << query.result();
qDebug() << query.size();
query.first();
while (query.next())
{
qDebug() << "found " << endl;
}
尝试写这样的路径 - C:\ temp \ atsakymai_1.db,但结果相同:
query.result - 0x3c6ed8
query.size - -1
我整天都在谷歌找到任何解决方案,但它没有帮助,仍然不知道我的代码有什么问题。
在SELECT之前尝试INSERT,INSERT无错误地工作,但SELECT仍然不返回任何内容:
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("C:/temp/atsakymai_1.db");
if (!db.open())
{
qDebug() << "error!!!";
}
QSqlQuery query(db);
query.exec("insert into t_transportas (transportas) values ('asdasd22')");
query.exec("SELECT id, transportas FROM 't_transportas'");
qDebug() << query.executedQuery();
qDebug() << query.result();
qDebug() << query.size();
if (query.size()> 0)
{
qDebug() << "found " <<
}
答案 0 :(得分:2)
发现问题所在,QSqlQuery :: size()函数不起作用,它总是返回-1。所以不要使用此函数来查找行数。代替使用.first()。next()函数。此代码可以正常工作:
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("C:/temp/atsakymai_1.db");
if (!db.open())
{
qDebug() << "error!!!";
}
QSqlQuery query(db);
query.prepare("SELECT id, transportas FROM 't_transportas'");
if (!query.exec())
{
qDebug() << "SQL error: "<< query.lastError().text() << endl;
}
query.first();
qDebug() << "found: " << endl;
while (query.next())
{
qDebug() << query.value("id").toString() << ". " << query.value("transportas").toString();
}
Asnwer在这里找到: QtSQL + Sqlite and support for .size() function?