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];
}