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

QSqlError("',"',"',) In QT widget app

本文关键字:应用程序 小部 QSqlError QT      更新时间:2023-10-16

我正在制作一个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()));
}

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

exec()函数调用返回一个bool值。

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

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 检查。