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

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

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

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

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

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


person mezamorphic    schedule 26.06.2012    source источник


Ответы (3)


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

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

    }
}
person moribvndvs    schedule 26.06.2012

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

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

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

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

person invert    schedule 26.06.2012

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];
}
person AngeloBad    schedule 26.06.2012