当我在我的数据库上执行此命令时,我有时会收到result = null。我想在发生这种情况时进入“其他”部分,但我收到了
mscorlib.dll中发生了未处理的“System.FormatException”类型异常。 附加信息:输入字符串的格式不正确。
DB database = new DB();
int reservedSeats = 0;
using (database.sqlConnection)
{
database.sqlConnection.Open();
string command = "select SUM(nrLocuri) as result from Rezervari where idRand = @idRand and idShow=@idShow";
using (SqlCommand cmd = new SqlCommand(command, database.sqlConnection))
{
cmd.Parameters.Add("@idRand", SqlDbType.Int).Value = idRand;
cmd.Parameters.Add("@idShow", SqlDbType.Int).Value = idShow;
using (SqlDataReader dr = cmd.ExecuteReader())
{
if (dr.Read())
if (dr["result"].ToString() != null)
reservedSeats = Convert.ToInt32(dr["result"].ToString());
else
return totalSeats;
}
}
}
return totalSeats-reservedSeats;
答案 0 :(得分:6)
而不是:
if (dr["result"].ToString() != null)
执行:
if (dr["result"] != DbNull.Value)
当dr["result"]
返回数据库null
时,其值为DbNull.Value
- 当您尝试在此值上调用Convert.ToInt32
时,会出现格式异常。
答案 1 :(得分:2)
尝试:
if(!dr.IsDBNull(i)){ //replace i with the column id
//get the data
}
答案 2 :(得分:1)
如果您希望SUM()
在未找到任何记录的情况下返回0.00
,请将其替换为:
COALESCE(SUM(...), 0.00)
COALESCE将返回传递给它的第一个非空值。
答案 3 :(得分:1)
尝试isnull
:
string command = "select isnull(SUM(nrLocuri),0.00 )as result from Rezervari where idRand = @idRand and idShow=@idShow";