ExecuteScalar 返回错误值
ExecuteScalar returning wrong value
我在从数据库中选择最大 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 中的 product_id,但它返回 0。我不知道为什么。 .. 其他变量 - kategoria 和 HiddenField1.Value 是正确的。
知道我做错了什么吗?
你有
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
.
我在从数据库中选择最大 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 中的 product_id,但它返回 0。我不知道为什么。 .. 其他变量 - kategoria 和 HiddenField1.Value 是正确的。
知道我做错了什么吗?
你有
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
.