我正在制作一个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()));
}
答案 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检查。