qt sqlite select语句

时间:2011-07-06 13:59:59

标签: qt sqlite select

我决定为我的Qt应用程序测试sqlite db。

我已经使用正确的语句创建了sqlite db文件(创建表等并插入了一些数据行)。 我的问题是,当我执行一个select语句时,我没有得到任何记录。

这是我使用的代码:

qq.sprintf("SELECT * from descriptors WHERE descriptors.id=%d ",idx);
query.exec(qq);
if( query.isSelect() ){
    while (query.next()){

    int fff = query.value(0).toInt();

}}

问题是我从未进入while循环。 query.next()似乎不起作用。

任何提示? 提前致谢, Thodoris

P.S。我忘记编写我的配置了:Qt 4.7.3,windows 7,visual studio 2008

2 个答案:

答案 0 :(得分:2)

除了发布的错误hexa之外,即使查询失败,query.isSelect()也将始终返回true。您需要检查exec()的结果:

QSqlQuery query;
query.prepare( "SELECT * FROM descriptors WHERE id = ?" );
query.bindValue( 0, idx ); // assuming idx is an integer/long/QVariant value

if( !query.exec() )
{
  // Error Handling, check query.lastError(), probably return
}

// Note: if you don't return in case of an error, put this into the else{} part
while( query.next() )
{
    int fff = query.value( 0 ).toInt();
}

答案 1 :(得分:0)

就我而言,QSqlQueries的后向迭代有效。我认为这可能是QSQLite Driver实现中某处的错误。

QSqlQuery q = db.exec("SELECT * FROM Table");
if (q.last()) {
    do {
        // Do something with row...
    } while (q.previous());
}