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();
}
尝试
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
}