1
我想要做的是query.exec()一個DELETE語句,如果刪除成功,我想顯示更新的表,否則顯示一個QMessageBox,說名稱不匹配。如何在QtCreator中基於SqlQuery結果做條件語句?
我的印象是,如果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();
謝謝隊友。它完美地工作 – DDauS 2015-02-12 17:27:36