OK我創建了一個產品表[ID,itemCode],一個銷售表和一個視圖,該視圖返回庫存物料的總和。如果該物品尚未售出,則視圖中沒有記錄。 我需要檢查,如果項目是在股票,以完成進一步的銷售等ASP .NET C#SQL在ExecuteScalar上返回DBNULL
我所做的是這樣的:
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();
}
它正常工作時,該項目在股票確實存在,但如果有沒有記錄我的錯誤:
Conversion failed when converting the nvarchar value '1E001' to data type int.
「1E001」在我的股票鑑於第一itemCode卻是風馬牛不相及的itemCode我想插入。
的問題似乎是在該行:
object obj = com.ExecuteScalar();
我也嘗試了
"SELECT COUNT(total) FROM [stock] WHERE ([itemCode] = " + TextBoxCode.Text + ")";
具有相同的結果。我無法讓它工作。
順便說一句,通過兩次使用'com.ExecuteScalar()',你同時執行查詢兩次,而'obj'應該已經包含答案。 – 2011-03-21 14:26:11
你能發表你的觀點代碼嗎? – jfollas 2011-03-21 14:45:45
讓SQL注入飛行! – 2011-03-21 17:29:26