【发布时间】:2011-03-21 14:02:18
【问题描述】:
好的,我创建了一个产品表 [ID, itemCode]、一个销售表和一个返回库存商品总和的视图。问题是如果该项目尚未售出,则视图中没有它的记录。 我需要检查商品是否有货,以完成进一步的销售等。
我所做的是这样的:
string selectSQL = "SELECT [total] FROM [stock] WHERE ([itemCode] = " + TextBoxCode.Text + ")";
SqlConnection con = new SqlConnection(connectionString);
SqlCommand com = new SqlCommand(selectSQL, con);
try
{
con.Open();
object obj = com.ExecuteScalar();
if (obj == null) //(also tried is DBNull)
{
lblStatus.Text = "Does not exist in stock";
}
else
{
sum = com.ExecuteScalar().ToString();
lblStatus.Text = "Items in stock: " + sum;
}
}
catch (Exception err)
{
lblStatus.Text = err.Message;
}
finally
{
con.Close();
}
当该项目实际存在库存时它工作正常,但如果没有记录我得到错误:
将 nvarchar 值“1E001”转换为数据类型 int 时转换失败。
“1E001”是我的库存视图中的第一个 itemCode,但它与我尝试插入的 itemCode 无关。
问题似乎出在一行:
object obj = com.ExecuteScalar();
我也试过了
"SELECT COUNT(total) FROM [stock] WHERE ([itemCode] = " + TextBoxCode.Text + ")";
结果相同。我无法让它工作。
【问题讨论】:
-
顺便说一句,通过使用
com.ExecuteScalar()两次,您还执行了两次查询,而obj应该已经包含了答案。 -
你能发布你的视图代码吗?
标签: c# asp.net sql-server