C# 應用查詢 SQL Server 資料表,其中 lid 欄位為 uniqueidentifier (GUID) 型別,傳入參數型別錯誤導致查詢失敗。
截圖顯示兩個不同欄位:lid (GUID) 與 selllistno (字串/數值)。程式碼誤將 selllistno 的值當作 GUID 傳遞給 lid 參數,或反之,導致型別轉換失敗。
Guid 型別對應 uniqueidentifier:Guid lid = Guid.Parse(lidString); // 或 new Guid(lidString)
cmd.Parameters.Add("@lid", SqlDbType.UniqueIdentifier).Value = lid;
lid 與 selllistno。Guid.TryParse 後再建立參數。Guid,雖然 SQL Server 隱式轉換有時可行,但不穩定。AddWithValue 中傳入字串,讓 ADO.NET 推斷型別,可能推斷為 NVarChar 導致索引失效或轉換錯誤。明確指定 SqlDbType.UniqueIdentifier 並傳入 Guid 物件,確保型別安全與查詢計畫重用。