2012-03-21 53 views
1

我試圖刪除與此代碼QT:刪除與qsqlquery

int jobId = 655; 
query.prepare("DELETE FROM jobs WHERE jobId = '" + QString::number(jobId) + "'"); 
QString error = query.lastError().text(); 
if (query.exec()) 
    qDebug() << "DELETE ok"; 
else 
    qDebug() << error; 

如果存在的jobId所有罰款,但如果沒有退出過顯示「確認刪除」。

我該如何檢查這種情況?

非常感謝你

+0

您需要()'執行查詢後檢索'lastError。 (即在'else'部分,在你的情況。) – 2017-06-11 17:08:18

回答

6

一個DELETE查詢不產生錯誤,如果它沒有任何刪除。

您可能能夠發現是否有東西被刪除QSqlQuery::numRowsAffected

但是,如果您想在刪除它之前知道該ID是否存在,則必須對該ID進行單獨的SELECT請求。

PS:你應該使用addBindValuebindValue在查詢字符串中插入值:

query.prepare("DELETE FROM jobs WHERE jobId = ?"); 
query.addBindValue(jobId); 
+0

感謝您的解釋 – Jjreina 2012-03-21 11:41:34

+0

而當查詢是更新時,我該如何檢查相同的情況?我嘗試query.numRowsAffected(),如果jobId不存在或存在總是返回0. Thnaks – Jjreina 2012-03-21 12:12:34

+0

對不起query.numRowsAffected()正常工作與更新。謝謝 – Jjreina 2012-03-21 12:24:42