我有一个简单的查询,当满足条件时,它会从SQL数据库中的表中对一列进行求和。
但仍然会抛出异常。感谢您的帮助。
decimal stock = 0;
SqlCommand cmd = new SqlCommand();
SqlDataReader myRdr;
cmd.Connection = connection;
cmd.CommandText = "SELECT SUM(stock) AS stock FROM table WHERE id=@id AND condition=@condition";
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"]);
}
}
但仍然会抛出异常。感谢您的帮助。