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

C# 操作 SQL Server UniqueIdentifier 型別欄位查詢時參數型別不匹配

     編輯:程式設計綜合問答

問題背景

C# 應用查詢 SQL Server 資料表,其中 lid 欄位為 uniqueidentifier (GUID) 型別,傳入參數型別錯誤導致查詢失敗。

錯誤分析

截圖顯示兩個不同欄位:lid (GUID) 與 selllistno (字串/數值)。程式碼誤將 selllistno 的值當作 GUID 傳遞給 lid 參數,或反之,導致型別轉換失敗。

正確做法

  1. C# 端使用 Guid 型別對應 uniqueidentifier:
Guid lid = Guid.Parse(lidString); // 或 new Guid(lidString)
cmd.Parameters.Add("@lid", SqlDbType.UniqueIdentifier).Value = lid;
  1. 確認 SQL 參數名稱與欄位一一對應,勿混淆 lid 與 selllistno。
  2. 若前端傳入字串,後端驗證 Guid.TryParse 後再建立參數。

常見誤區

  • 直接傳入字串「12345678-1234-1234-1234-123456789012」未轉為 Guid,雖然 SQL Server 隱式轉換有時可行,但不穩定。
  • 在 AddWithValue 中傳入字串,讓 ADO.NET 推斷型別,可能推斷為 NVarChar 導致索引失效或轉換錯誤。

最佳實踐

明確指定 SqlDbType.UniqueIdentifier 並傳入 Guid 物件,確保型別安全與查詢計畫重用。

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