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

C# MDB 插入失敗:SQL 語法、字段類型、約束檢查清單

     編輯:程式設計綜合問答

現象

cmd.ExecuteNonQuery() 報「insert into 語句語法錯誤」,DataGridView 數據無法寫入 MDB。

系統排查清單

  1. 表名、字段名拼寫:區分大小寫、無全角字符、無保留字(用 [字段名] 括起)。
  2. 字段類型與值匹配:
    • 文本/備忘錄 → 單引號 '值'。
    • 數字/日期/布爾 → 無引號 值(日期 #YYYY-MM-DD#)。
  3. 非空約束:表中必填字段是否全在 VALUES 中。
  4. 主鍵/唯一索引衝突:插入重複主鍵值。
  5. 字段長度:文本字段長度是否足夠(Access 設計視圖檢查)。
  6. 自增字段:主鍵為自增時 **不可顯式插入**,需從 SQL 移除該字段。
  7. 參數化命令(根治語法錯誤):
    string sql = "INSERT INTO [goods] ([字段1], [字段2]) VALUES (?, ?)";
    using (OleDbCommand cmd = new OleDbCommand(sql, conn)) {
        cmd.Parameters.AddWithValue("@p1", val1);
        cmd.Parameters.AddWithValue("@p2", val2);
        cmd.ExecuteNonQuery();
    }

調試技巧

  • 在 Access 中直接運行生成的 SQL 字符串,查看具體報錯提示。
  • 捕獲 OleDbException 打印 ErrorCode、Message。

**參數化命令同時解決:語法拼接錯誤、類型轉換、特殊字符轉義、注入風險**,是 C# 操作 Access 的標準做法。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved