現象
- 調試時提示空指針(`e.ErrorMessage()`)。
- 直接運行彈出 `Debug Error! R6010 - abort() has been called`。
可能原因
- 連接字串/命令對象未正確初始化:檢查 `Connection`、`Command`、`Recordset` 是否在使用前 `CreateInstance`/`Open`。
- 異常處理邏輯缺失:ADO 操作需包裹在 `_com_error` try-catch 中,否則 COM 錯誤會觸發 CRT 終止。
- 資源釋放順序錯誤:關閉 `Recordset` 前未檢查狀態,或 `Connection` 關閉時仍有活動命令。
- DLL 版本不匹配:`msado15.dll` 版本與編譯環境不一致。
建議排查步驟
- 將連接字串、打開數據庫、執行 SQL 的代碼**完整貼出**,逐行加日誌定位崩潰行。
- 使用 `_ConnectionPtr` 等智慧指針(`#import` 生成),避免手動 `Release`。
- 按鈕點擊事件中**僅執行查詢/更新**,連接對象建議在類成員中初始化一次(單例/連接池),而非每次點擊重新連接。
「代碼有問題,但在特定條件下才觸發」——請提供最小可復現片段以便精準定位。