1、問題描述
使用 QxORM 刪除或者更改數據庫時,當主鍵值為 0 時,報錯:
[QxOrm] invalid primary key
2、原因分析
2.1 源碼分析
查找打印錯誤提示的代碼:
#define QX_DAO_ERR_INVALID_PRIMARY_KEY "[QxOrm] invalid primary key"
QSqlError IxDao_Helper::errInvalidId()
{ return updateError(QX_DAO_ERR_INVALID_PRIMARY_KEY); }
分別在以下的方法中檢查 ID 值是否有效
deleteById
fetchById
update
檢查 ID 值是否有效的方法
if (! dao.isValidPrimaryKey(t)) { return dao.errInvalidId(); }
2.2 主鍵無效的判定原則
跟蹤 isValidPrimaryKey 方法,最后調用模板函數及特例 is_valid_primary_key,源碼如下,可見,當主鍵值為 0 或者為 isEmpty() 時&#