从数据库接收null时出错

seb*_*ibu 0 c# sql-server

当我在我的数据库上执行此命令时,我有时会收到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; 
Run Code Online (Sandbox Code Playgroud)

Ode*_*ded 6

代替:

if (dr["result"].ToString() != null)
Run Code Online (Sandbox Code Playgroud)

做:

if (dr["result"] != DbNull.Value)
Run Code Online (Sandbox Code Playgroud)

dr["result"]返回数据库时null,其值为DbNull.Value- 当您尝试调用Convert.ToInt32此值时,将获得格式异常.