QSqlError(“',”',“',)在QT小部件应用程序中

时间:2017-05-18 16:15:00

标签: c++ qt sqlite

我正在制作一个ATM应用程序,但出于某种原因,当执行代码以显示用户余额时,它不能正确地从数据库中获取值。它会抛出错误QSqlError(""'."",""')

class bankfn : public QObject{
public:

    int getCheq(QString e){
        QSqlDatabase myDB = QSqlDatabase::database("myConnection",true);
        QSqlQuery qry(myDB);

        qry.prepare("SELECT cheqBal FROM userRecords WHERE email = (:email)");
        qry.bindValue(":email",e);
        qDebug() << qry.lastError();
        return qry.exec();
    }

    int getSav(QString e){
        QSqlDatabase myDB = QSqlDatabase::database("myConnection",true);
        QSqlQuery qry(myDB);

        qry.prepare("SELECT savbal FROM userRecords WHERE email = (:email)");
        qry.bindValue(":email",e);
        qDebug() << qry.lastError();
        return qry.exec();
    }

    void setCheq(QString e);
    void setSav(QString e);
};


void maunMenu::setupLogin() //Set up login page for after user credential check
{
   ui->cheqbalL->setText("$"+bank.getCheq(sm.activeUser()));
   ui->savBalL->setText("$"+bank.getSav(sm.activeUser()));
}

1 个答案:

答案 0 :(得分:1)

实际上,您似乎没有收到任何错误。您正在尝试打印无错误情况。

您的exec()函数调用返回bool值。

如果要跟踪错误,请先检查bool语句返回的exec()值。

如果查询执行失败,exec()函数返回false。

应该如下所示:

int getCheq(QString e){
..
..
..
..
       bool error = qry.exec();

       //HANDLE THE ERROR IF THE EXEC RETURNS FALSE
       if(!error)       
         qDebug() << qry.lastError();

       return isErrored ;
}

如果查询执行成功与否,则getCheq函数返回更多内容。它不会返回您期望的值。

您必须返回查询结果的值。

将函数返回类型更改为double

您可以从查询中返回值,如下所示。

return qry.value(0).toDouble();

注意:在返回值/访问成员之前,请先处理NULL检查。