sisey shaban Ответов: 2

Как обрабатывать ошибки dbnull


Всем Привет,

учитывая нижеприведенное, когда появляется ошибка(например,ошибка DBNULL) и вы нажимаете OK, другие события(например, нажатие кнопки) перестают реагировать, есть ли способ, которым я могу обработать это сообщение об ошибке, чтобы оно не влияло на другие события. Спасибо.

Что я уже пробовал:

try
            {
                string selectcom7 = @"select sum(inv) as prevyear from grawu 
                                      where StaffNumber=@staffid and DATEPART(year,Date)<@year";
                SqlCommand comm7 = new SqlCommand(selectcom7, connection);
                comm7.Parameters.AddWithValue("@staffid", txtstaffid.Text);
                comm7.Parameters.AddWithValue("@year", cmbyear.Text);

                connection.Open();
                SqlDataReader dr7 = comm7.ExecuteReader();
                //string value;

               

                if (dr7.Read())
                {
                    if (dr7["prevyear"] == null)
                    {
                        previnvestment = Convert.ToDecimal(0.00);
                    }
                    else
                    { previnvestment = Convert.ToDecimal(dr7["prevyear"]); }
                    

                    //previous = Convert.ToString( dr7["prevyears"]);
                    
                }
                else
                {
                    MessageBox.Show("No Previous data found");
                    
                }

            }
            catch (Exception ex)
            {
                MessageBox.Show("From Previous Balance :" + ex.Message);
            }
            finally
            {
                connection.Close();
                
            }

2 Ответов

Рейтинг:
2

F-ES Sitecore

Существует специальный DBNull для обработки нулей из базы данных, поскольку "null" является .net null и имеет другое значение.

if (dr7["prevyear"] == DBNull.Value)


Рейтинг:
2

Karthik_Mahalingam

Цитата:
if (dr7["prevyear"] == null)
{
previnvestment = конвертировать.ToDecimal(0.00);
}
еще
{ previnvestment = конвертировать.ToDecimal(dr7["prevyear"]); }

Вышеуказанный набор кодов должен быть заменен на
double.TryParse((dr7["prevyear"]+""),out previnvestment);

относиться Двойной.Метод TryParse [^]

если вы хотите проверить значения null/DBNull, вы должны использовать это
if (dr7["prevyear"] != null && dr7["prevyear"]!= DBNull.Value)
           {

           }