QT SQLite select不返回任何数据

QT SQLite select returns no data

本文关键字:任何 数据 返回 SQLite select QT      更新时间:2023-10-16

我的QT SQL选择不返回任何数据:

 //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 " << 
}

发现问题所在,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和对.size()函数的支持?