FormatException:输入字符串的格式不正确

本文关键字:格式 不正确 字符串 输入 FormatException | 更新日期: 2023-09-27 17:58:40

我在数据库中的一个表中有Views字段。一开始我允许它取null,现在它不允许它取null。问题是,当我将SqlReader实例转换为int时,会引发异常

       try
    {
        conn.Open();
        SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
        if (dr != null && dr.Read() && dr["Views"] != null && dr["PageNumber"] != null && dr["Replies"]!=null)
        {
            Name = dr["Name"].ToString();
            ThreadName = dr["ThreadTitle"].ToString();
            Views = int.Parse(dr["Views"].ToString());//it is being thrown here when i try to convert it to an int..How can i prevent that mistake from being thrown?
            Replies = int.Parse(dr["Replies"].ToString());
            Topic = dr["Theme"].ToString();
            Subtopic = dr["Topics"].ToString();
            PageNumber = int.Parse(dr["PageNumber"].ToString());
            Time = (DateTime)dr["Time"];
        }
        dr.Close();
    }

FormatException:输入字符串的格式不正确

尝试

 View = dr["Views"] as int? ?? 0;

如果db中的值为null,那么在该值之上,它将被强制转换为可以接受null的可为null的int。

使用聚结运算符??如果数据库中的值为null,则将View的值设置为其他值(在本例中为0)。

您可以使用int.TryParse()来避免错误。如果问题只是null,我建议使用System。转换以处理这些情况,因为它更安全、更清晰:

View = System.Convert.ToInt32(dr["Views"]);

要避免转换时出现异常,请始终使用Int32.TryParse。

怎么样

if(dr["Views"] != DBNull)
{
// do your parse here
}