1

SQLDataReaderを使用して列データをstring[]に挿入しています。

ただし、一部の列値はnullです。reader [column_pos]を実行すると、値が「n / a」と表示されるため、これを確認する方法が少しわかりません。

次のようなことを行うために、どのようなチェックを実行できますか。

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

列にnullがある場合は常に、空白のスティングを挿入します。

4

4 に答える 4

12

IsDBNullを使用できます

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

    }
}
于 2012-06-26T09:54:22.457 に答える
3

も使用できますif (reader[0] == DBNull.Value)。クエリの実行を制御できる場合は、代わりに SQLISNULL(field, default_value)関数を使用して、列が確実に値を返すようにすることができます。

C# の場合は、if/else 短縮形も使用できます。

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

つまり、リーダーの値が の場合は を使用し、それ以外の場合はリーダーの値をDBNULL使用""します。

于 2012-06-26T09:58:11.547 に答える
0
myarray[i] = reader.IsDBNull(i) || reader[i] == DBNull.Value ? string.Empty : reader[i];
于 2012-06-26T10:03:09.910 に答える
0

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];
}
于 2012-06-26T10:00:52.623 に答える