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

C# Update 語句執行無報錯但數據不更新:SQL 參數化賦值邏輯錯誤

     編輯:程式設計綜合問答

現象

首次 Insert 成功,後續 Update 執行無異常,但數據庫中 ReserveNumber 變為 0 而非遞增。

問題 SQL(簡化)

UPDATE Table SET ReserveNumber = @num, TotalProfit = @profit WHERE ...

參數 @num 來自變量,但變量未正確累加(如每次重置為 0 或未賦值)。

排查步驟

  1. 在執行前 Console.WriteLine(sql) 打印實際 SQL 與參數值
  2. 檢查 C# 代碼中累加邏輯:num = oldNum + 1; 而非 num = 1;
  3. 確認 WHERE 條件精確匹配唯一行

正確示例

cmd.CommandText = "UPDATE Report SET ReserveNumber = ReserveNumber + 1, TotalProfit = TotalProfit + @price WHERE Date=@date AND Room=@room";
cmd.Parameters.AddWithValue("@price", price);
cmd.Parameters.AddWithValue("@date", date);
cmd.Parameters.AddWithValue("@room", room);
cmd.ExecuteNonQuery();

直接在 SQL 中 ReserveNumber = ReserveNumber + 1 避免應用層併發問題,更簡潔可靠。

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