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

C# Access 寫入失敗排查:非空字段缺失、ID 類型不匹配、字段長度為 0

     編輯:程式設計綜合問答

錯誤現象

執行 INSERT INTO patient(...) 無報異常但數據未入庫,或提示語法錯誤。

常見原因及修正

  1. 非空字段未賦值:表中有 是否已收費 字段非空,SQL 未包含該字段。
    INSERT INTO patient(ID, 名字, 年齡, 性別, 電話, 科室, 是否已收費) 
    VALUES (@id, @name, @age, @sex, @phone, @dept, 0)
  2. ID 字段類型不匹配:若 ID 為文本類型,VALUES 中需加單引號 '@id';若為自增,則不應顯式插入 ID。
  3. 字段長度為 0:Access 設計視圖中字段長度屬性為 0 導致無法寫入數據,需修改為合理值(如 255)。
  4. 多數據庫文件混淆:專案目錄下存在多個 .accdb 文件,插入一個卻打開另一個查看,誤以為寫入失敗。建議刪除無用副本,確保連接字符串指向唯一文件。

最佳實踐:參數化命令

using (OleDbConnection conn = new OleDbConnection(connStr))
using (OleDbCommand cmd = new OleDbCommand(sql, conn)) {
    cmd.Parameters.AddWithValue("@id", txtID.Text);
    cmd.Parameters.AddWithValue("@name", txtName.Text);
    // ... 其他參數
    conn.Open();
    cmd.ExecuteNonQuery();
}

參數化自動處理類型轉換、特殊字符轉義,防注入且代碼更清晰。

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