QSqlQuery.next()返回false但在数据库中有数据。为什么?

时间:2017-06-05 18:15:33

标签: qt sqlite

我的sqlite数据库中有数据。 Insert语句执行成功。但是当想从db获取数据时,我发现什么都没有,这个错误“QSqlError(”“,”“,”“)”。我已检查我的查询是否有效且无效。如何解决这个问题?

这是我的代码:

void FindDialog::find()
{

    QString roll_number = ui->txt_RN->text ();

    int roll = roll_number.toInt ();

    const QString findstmnt = "SELECT Roll_Number, Name FROM student_info WHERE Roll_Number = :roll";

    scon->getQuery ()->prepare (findstmnt);

    scon->getQuery ()->bindValue ("roll", roll);

    if(scon->getQuery ()->exec ()){

        qDebug() << "Active: " << scon->getQuery ()->isActive ();

        qDebug() << "Valid: " << scon->getQuery ()->isValid ();

        if(scon->getQuery ()->isActive ()){
            if(scon->getQuery ()->next ()){
                qDebug() << "Has Data: " << scon->getQuery ()->next ();
            } else {
                qDebug() << scon->getQuery ()->lastError ();
            }
        }

    } else {
        qDebug() << scon->getQuery ()->lastError ();
    }

1 个答案:

答案 0 :(得分:0)

参数的名称不是roll,而是:roll

将值绑定到错误的参数名称时,实际参数的初始值为NULL。 因此查询永远不会找到任何行,因为没有值比较等于NULL