如何在QtCreator中基于SqlQuery结果执行条件语句
How to do conditional statements based on SqlQuery results in QtCreator?
我想做的是查询.exec()一个DELETE语句,如果删除成功,我想显示更新的表,否则显示一个QMessageBox,说明名称不匹配。
我的印象是,如果DELETE语句找不到条目,那么query.exec()将为FALSE。但无论我为这个名字输入什么,它总是正确的。有解决这个问题的办法吗?谢谢大家。。。
所以我现在的代码是:
bool ok;
QInputDialog *dialog = new QInputDialog;
QString name = dialog->getText((QWidget*)this->parent(), tr("Enter Buyer to Delete:"),
tr("Buyer Name:"), QLineEdit::Normal,
"", &ok);
QSqlTableModel *model1;
QSqlQuery query;
query.prepare("DELETE from buyers WHERE name=:name");
query.addBindValue(name);
bool x = query.exec(); //<----PROBLEM: EVEN WITH INCORRECT name,
qDebug() << x; // query.exec() RETURNS true ALTHOUGH delete
if (!x) // IS SUPPOSED TO FAIL
{
QMessageBox box;
box.setInformativeText("No buyer found with name matching " + name);
box.exec();
}
model1 = new QSqlTableModel;
model1->setTable("buyers");
model1->select();
model1->setHeaderData(0, Qt::Horizontal, tr("ID"));
model1->setHeaderData(1, Qt::Horizontal, tr("Name"));
model1->setHeaderData(2, Qt::Horizontal, tr("Location"));
model1->setHeaderData(3, Qt::Horizontal, tr("Phone"));
model1->setHeaderData(4, Qt::Horizontal, tr("Email"));
QTableView *view1 = new QTableView;
view1->setWindowTitle("Buyer List updated");
view1->setModel(model1);
view1->show();
您可以使用QSqlQuery::numRowsAffected()
:
QSqlQuery query("your_query_here");
query.exec();
if(query.numRowsAffected() == 0)
{
//didn't delete anything
}
else
{
//worked fine
}
注意,根据Qt文档,此功能
返回受结果的SQL语句影响的行数,或-如果无法确定,则为1。请注意,对于SELECT语句,该值是未定义的;请改用size()。如果查询未激活,则-1返回。
相关文章:
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- valgrind-hellgrind与泄漏检查的结果不同
- 用C++20 fmt限制结果的总大小
- 如何返回一个类的两个对象相加的结果
- 使用QProcess执行命令,并将结果存储在QStringList中
- 如果我std::dynamic_pointer_cast并且底层dynamic_cast的结果为null,那么返回的sh
- 在没有定义返回类型的函数中返回布尔值,并将结果保存在无错误的char编译中-为什么
- 序列化,没有库的整数,得到奇怪的结果
- 使用取消引用的指针的多态性会产生意外的结果.为什么?
- 在更改for循环的第三部分后,未使用for循环结果
- 使用++运算符会导致意外的结果
- 为什么在逗号分隔符上下文中将预增量的结果强制转换为void
- C++Brute Force攻击函数不会返回结果
- 你好。。。id_public变量不应该给出结果为 81 和 86 吗?为什么它为两个派生类占用不同的内存位置?
- 算术运算的结果类似于:C浮点变量中的1/3
- ";结果类型必须是可从输入范围的值类型""构造的;创建std::vector时
- 密码登录程序将永远循环并显示不正确的结果
- 如何让C++'tally up'结果并制定计划?
- 为什么这个程序的结果是3 "born"?和 4 死
- 如何在QtCreator中基于SqlQuery结果执行条件语句