2017-02-09 5 views
-5

привет прошу о моей ошибке увидеть мой снимок экрана, благодаряСпросите о DBNull к другим типам

DBNULL to other types Я создаю мои C# код для чтения файла первенствовать, но что-то было проблема см.выше моего снимка экрана

другая проблема, я введенный код, но будет показан снимок экрана ГЭЭ ошибки ниже использования

Other Error

+0

включают фрагмент кода, а –

+0

Что такое тип 'row'? – Dai

+0

Столбец (по индексу 8) в строке, которую вы читаете, равен null. Вы не можете хранить нуль в десятичной системе. – Rob

ответ

-2

или (||) условие вместо и (& &) состояние, как показано ниже:

if(onhand == "" || row[8] == System.DBNULL.value) 
{ 
    //your code 
} 
else 
{ 
    ONHANDQTY=Convert.toDecimal(row[8]); 
} 
+0

'DBNull' и' null' - это не то же самое. – Rob

+0

okay sir, я пытаюсь это thnaks –

0

Я не знаю, что базы данных библиотеки вы используете, но большинство библиотек построены на вершине ADO.NET не всегда используют .NET null ссылку, чтобы указать значение SQL NULL. Это то, что DBNull для (доступ через DBNull.Value). Вы можете проверить для SQL NULL с помощью оператора Object Reference Equality == или Object.ReferenceEquals.

Ваш код довольно запутанный. Я предлагаю вам попробовать это вместо:

Object value = row[8]; // I don't know what `row` is, change this to be a more specific type if there are any type-safety constraints on `row[8]`. 
if(Object.ReferenceEquals(DBNull.Value, value)) { 
    // value is SQL NULL 
} 
else { 
    // value is not SQL NULL, but it is not necessarily a Decimal value either 

    if(value is Decimal) { 

     return (Decimal)value; // you can't use the shorthand `as` operator with value-types like Decimal 
    } 
} 
0

Надежда, что может быть шанс для row[8] быть DBNull. в таких случаях вы можете проверить это, сравнив row[8] с System.DBNull.Value.
попробовать, как это:

if (row[8] != System.DBNull.Value)) 
{ 
    decimal quantity; 
    if(decimal.TryParse(row[8].ToString(), out quantity) 
    { 
     item.ONHANDQTY = quantity; 
    } 
} 
+0

Это неэффективно, если 'row [8]' уже является значением 'Decimal' вместо строки. – Dai

+0

@ Дай: да, вы правы в этом смысле. Но я рассмотрел «Convert.ToDecimal» в коде OP –

Смежные вопросы