首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Qt 資料庫操作錯誤捕獲:sql.lastError() 使用指南

     編輯:程式設計疑難解答

核心 API

QSqlQuery::lastError() 返回 QSqlError 物件,包含錯誤類型、數據庫原文、驅動文本等詳細資訊。

標準檢查模式

QSqlQuery query;
bool ok = query.exec("INSERT INTO user(name) VALUES('test')");
if (!ok) {
    QSqlError err = query.lastError();
    qDebug() << "SQL Error:" << err.driverText()      // 驅動層錯誤(如 "Duplicate entry")
             << "| DB Text:" << err.databaseText()    // 數據庫原文
             << "| Type:" << err.type();              // 錯誤分類
    // 可根據 err.number() 進行具體處理(如 1062 為主鍵衝突)
}

常見錯誤類型對照

type()含義典型場景
QSqlError::NoError成功—
QSqlError::ConnectionError連線失敗IP/Port/防火牆/服務未啟動
QSqlError::StatementErrorSQL 語法/語義錯誤表不存在、欄位拼寫錯誤、類型不匹配
QSqlError::TransactionError事務失敗死鎖、回滾失敗
QSqlError::UnknownError其他驅動 Bug、資源耗盡

進階技巧

  • 開啟 QSqlDatabase::setConnectOptions("MYSQL_OPT_RECONNECT=1") 自動重連。
  • 使用 QSqlQuery::prepare() + bindValue() 防注入並獲得更清晰的錯誤定位。
  • 封裝通用 execWithLog() 函式,統一記錄 SQL 文本、耗時、錯誤碼,便於審計與排查。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved