QT SQLite select不返回任何数据

时间:2015-11-02 13:53:05

标签: c++ qt sqlite

我的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 " << 
}

1 个答案:

答案 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?