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

C# OleDb 批次更新:Insert 語法錯誤常見原因排查

     編輯:程式設計綜合問答

錯誤現象

使用 OleDbDataAdapter.Update 將 DataSet 變更寫回 Access 時,拋出「Insert into 語法錯誤」。

排查清單

  1. 主鍵衝突:新增行的主鍵值是否重複或為 NULL(若非自動編號)。
  2. 非空欄位未賦值:資料表中 NOT NULL 欄位在 DataRow 中是否有值。
  3. 欄位名稱保留字:欄位名含空格或關鍵字(如「齒數」),需在 SQL 中用 [齒數] 括起,或避免使用中文欄位名。
  4. 資料型別不符:TextBox 字串賦給數值欄位,需轉型。
  5. CommandBuilder 限制:OleDbCommandBuilder 自動生成的 SQL 可能不支援複雜情況,建議手寫 InsertCommand。

建議做法


// 手動指定 InsertCommand,欄位名加中括號
string sql = "INSERT INTO WorkPieceData ([齒數], [法面模數]) VALUES (?, ?)";
OleDbCommand cmd = new OleDbCommand(sql, conn);
cmd.Parameters.Add("@p1", OleDbType.VarChar, 50, "齒數");
cmd.Parameters.Add("@p2", OleDbType.VarChar, 50, "法面模數");
adapter.InsertCommand = cmd;

並檢查 DataRow.RowState 確認為 Added。

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