FormatException: входная строка была в неправильном формате - PullRequest
0 голосов
/ 09 июня 2011

У меня есть поле Views из одной из моих таблиц в базе данных.Сначала я позволял ему принимать нули, а теперь запретил принимать ноль.Проблема заключается в том, что это исключение выдается, когда я преобразую экземпляр 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();
    }

Ответы [ 4 ]

2 голосов
/ 09 июня 2011

Попробуйте

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

Если значение в БД равно нулю, то выше оно преобразуется в обнуляемое целое число, которое может принимать нули.

Использовать оператор объединения?установить значение View в другое значение (в данном случае 0), если значение в базе данных равно нулю.

1 голос
/ 09 июня 2011

Вы можете использовать int.TryParse () , чтобы избежать ошибки.Если зонд только нулевой, я бы порекомендовал использовать System.Convert для обработки этих ситуаций, потому что это безопаснее и понятнее:

View = System.Convert.ToInt32(dr["Views"]);
0 голосов
/ 09 июня 2011

Чтобы избежать исключений при конвертации, всегда используйте Int32.TryParse.

0 голосов
/ 09 июня 2011

Как насчет

if(dr["Views"] != DBNull)
{
// do your parse here
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...