SQLDataReader, как проверить нулевые значения столбца?

Я использую SQLDataReader для вставки данных столбца в строку [].

Однако некоторые значения столбца являются нулевыми. Я немного не уверен, как это проверить, потому что, когда я делаю читателя [column_pos], он говорит, что значение "н / д".

Какую проверку я могу выполнить, чтобы я мог сделать что-то вроде:

for(int i=0; i<myarray.Length;i++){
    if(something){
        myarray[i] = reader[i];
    }
    else
    {
        myarray[i] = "";
    }
}

и вставьте пустую строку, когда в столбце есть ноль.

4 ответа

Решение

Вы можете использовать IsDBNull

for(int i=0; i<myarray.Length;i++){
    if(reader.IsDBNull(i)){
        myarray[i] = "";
    }
    else
    {
        myarray[i] = reader[i];

    }
}

Вы также можете использовать if (reader[0] == DBNull.Value), Если у вас есть контроль над выполнением запросов, вы можете альтернативно использовать SQL ISNULL(field, default_value) функция, чтобы гарантировать, что столбец возвращает значение.

Для C# вы также можете использовать сокращение if/else:

myArray[i] = (reader[i] == DBNull.Value) ? "" : reader[0];

Что означает: если значение читателя DBNULLиспользовать "", иначе используйте значение читателя.

myarray[i] = reader.IsDBNull(i) || reader[i] == DBNull.Value ? string.Empty : reader[i];

Класс SqlDataReader имеет свойство IsDBNull.

Вы можете написать код следующим образом:

for(int i=0; i<myarray.Length;i++){
    if(myReader.IsDBNull(i)){
        myarray[i] = "";
    }
    else
    {
        myarray[i] = reader[i];

    } }

или еще лучше:

for(int i=0; i<myarray.Length;i++){
      myarray[i] = reader.IsDBNull(i) ? "" : reader[i];
}
Другие вопросы по тегам