2015-09-28 123 views
0

我從我的數據庫中選擇最大ID有點問題。這是我的代碼:ExecuteScalar返回錯誤的值

string checkcat = "SELECT MAX(PRODUCT_ID) FROM CMS_PRODUKTY WHERE (CATEGORY_ID = CATEGORY_ID) AND (CLIENT_ID = @CLIENT_ID)"; 
SqlCommand cmd2 = new SqlCommand(checkcat, con); 
cmd2.Parameters.Add("@CATEGORY_ID", System.Data.SqlDbType.Int).Value = kategoria; 
cmd2.Parameters.Add("@CLIENT_ID", System.Data.SqlDbType.Int).Value = HiddenField1.Value; 
con.Open(); 
int noweid = Convert.ToInt32(cmd2.ExecuteScalar()); 
con.Close(); 

點是新的詮釋「noweid」應該是1或更高版本 - 依賴於表格內的product_id,但它返回0。我沒有任何想法,爲什麼...的其他變量 - kategoria和HiddenField1.Value是正確的。

任何想法我做錯了什麼?

+0

您是否嘗試過使用SQL Server Management Studio對數據庫執行此查詢並驗證它是否返回1或更高? –

+1

它不會解決你的問題,但你有一個錯字'(CATEGORY_ID = CATEGORY_ID)'應該是'(CATEGORY_ID = @CATEGORY_ID)' - 注意'@'。 – petelids

回答

2

你有

WHERE (CATEGORY_ID = CATEGORY_ID) 

但你要

WHERE (CATEGORY_ID = @CATEGORY_ID) 

你也應該解析字符串int

cmd2.Parameters.Add("@CLIENT_ID", System.Data.SqlDbType.Int).Value = int.Parse(HiddenField1.Value); 

也許kategoria也是string,然後分析它也到int

+0

謝謝。它的工作完美。已經讀過這個代碼千次,並沒有看到這樣的錯誤...只需要添加@到SQL條件。 – Ashiv3r