ExecuteScalar返回错误的值

时间:2015-09-28 11:41:18

标签: c# sql database executescalar

从我的数据库中选择最大ID时遇到一些问题。这是我的代码:

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();

关键是新的int“noweid”应该是1或更高 - 依赖于table_id中的product_id,但它返回0.我不知道为什么......其他变量--kategoria和HiddenField1.Value是正确的。

任何想法我做错了什么?

1 个答案:

答案 0 :(得分: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