Объект не может быть преобразован из DbNull в другие типы C # Exception - PullRequest
0 голосов
/ 21 октября 2018

Приведенный выше код выдает ошибку, что Object не может быть приведен из DBNull к другим типам.Я попытался выставить условие if else, но это не имеет смысла, возможно, потому что моя проблема в том, что я выполню условие If, else, которое можно проверить. Если значение var_P_Amount равно нулю, то lbl_Purchasing_Amount.Text = "0";Пожалуйста, помогите

private void Get_Purchasing_Amount()
            {
                try
                {
                    double var_P_Amount = 0;
                    int var_C_Code = 0;
                    string query = "select c_code as 'code' from `db_vegetable`.`tbl_payment_master`";
                    DataTable dt_C_Code = method_Class.method_Class.FetchRecords(query);
                    if (dt_C_Code.Rows.Count > 0)
                    {
                        for (int i = 0; i <= dt_C_Code.Rows.Count; i++)
                        {
                            var_C_Code = Convert.ToInt32(dt_C_Code.Rows[i]["code"]);
                            if (var_C_Code.Equals(Convert.ToInt32(txt_Customer_Code.Text)))
                            {
                                string get_P_Amount;
                                if (check_All.Checked.Equals(true))
                                {
                                    get_P_Amount = "SELECT `purchasing` AS 'purchasing' FROM `db_vegetable`.`tbl_payment_master` WHERE `c_code` = " + txt_Customer_Code.Text + "";
                                }
                                else
                                {
                                    get_P_Amount = "SELECT SUM(t_price) as 'purchasing' FROM `db_vegetable`.`tbl_order_details` WHERE `c_code` = " + txt_Customer_Code.Text + " AND (`date` BETWEEN '" + txt_From_Date.Text + "' AND '" + txt_To_Date.Text + "')";
                                }
                                DataTable dt = method_Class.method_Class.FetchRecords(get_P_Amount);
                                var_P_Amount = Convert.ToDouble(dt.Rows[0]["purchasing"]);
                                lbl_Purchasing_Amount.Text = var_P_Amount.ToString();

                                //In this side i use many DBNull methed but it can't  be work
                                //My Question is that If var_P_Amount value is null then
                                //lbl_Purchasing_Amount.Text = "0";
                            }
                            else
                            {
                                lbl_Purchasing_Amount.Text = "0";
                            }
                        }
                    }
                    else
                    {
                        lbl_Purchasing_Amount.Text = "0";
                    }
                }
                catch (Exception)
                {

                }
            }

Ответы [ 2 ]

0 голосов
/ 21 октября 2018

Скорее всего, при конвертации в удвоение это не получится

0 голосов
/ 21 октября 2018

DbNull в наборе результатов означает, что ваш запрос к базе данных возвращает значение NULL в некотором столбце.Значение NULL по определению не может быть преобразовано в строку, число или что-либо еще.

В вашем случае у вас есть только один столбец в вашем наборе результатов, и это число.Таким образом, ноль, вероятно, может заменить NULL без ущерба для ваших данных.

Попробуйте настроить ваши запросы так, чтобы они никогда не возвращали NULL.Вот как:

 get_P_Amount = "SELECT IFNULL(`purchasing`,0) AS 'purchasing' ... 

и

get_P_Amount = "SELECT IFNULL(SUM(t_price), 0) as 'purchasing' FROM `db_vegetab ...

Однако это предположение.Вы не сказали нам в своем вопросе, какая строка кода в вашей программе вызвала исключение.

Совет Pro: Никогда не используйте catch (Exception) { }.Это заставляет вашу программу молча игнорировать вещи, которые идут не так.Вы хотите знать, когда ваша программа генерирует исключения, особенно когда она обрабатывает данные о деньгах других людей.Если вы должны его использовать, сделайте что-то вроде этого:

 catch (Exception) {
      /* empty, intentionally, because we ignore the zumbinated framiss */
 }

Это поможет удержать следующего программиста, работающего над вашим кодом, от проклятия вашего имени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...