我有一個簡單的查詢,它滿足條件時從SQL數據庫中的表中的列。SqlDataReader和SqlCommand使用SUM()
decimal stock = 0;
SqlCommand cmd = new SqlCommand();
SqlDataReader myRdr;
cmd.Connection = connection;
cmd.CommandText = "SELECT SUM(stock) AS stock FROM table WHERE [email protected] AND [email protected]";
cmd.CommandType = CommandType.Text;
cmd.Parameters.Add("@id", SqlDbType.NVarChar, 15).Value = id;
cmd.Parameters.Add("@condition", SqlDbType.NVarChar, 15).Value = condition;
connection.Open();
myRdr = cmd.ExecuteReader();
if (myRdr.HasRows)
{
myRdr.Read();
stock += Convert.ToDecimal(myRdr1["stock"]);
}
myRdr1.Close();
cmd1.Dispose();
connection.Close();
如果表中符合條件的條目正常工作,它會正常工作。如果沒有條目,它會拋出一個異常,說我嘗試將DBNull類型轉換爲十進制,這是不可能的。我試過這樣:
if (myRdr.HasRows)
{
myRdr.Read();
if (myRdr["stock"] != null)
{
stock += Convert.ToDecimal(myRdr1["stock"]);
}
}
但它仍然會引發異常。感謝您的幫助。
只需一點點添加即可使用您的解決方案:SELECT ISNULL(stock,0)AS stock FROM ... – user1080533