375 Stimmen

SQL Data Reader - Behandlung von Null-Spaltenwerten

Ich verwende einen SQLdatareader, um POCOs aus einer Datenbank zu erstellen. Der Code funktioniert, außer wenn er auf einen Nullwert in der Datenbank trifft. Wenn zum Beispiel die Spalte Vorname in der Datenbank einen Nullwert enthält, wird eine Ausnahme ausgelöst.

employee.FirstName = sqlreader.GetString(indexFirstName);

Wie kann man in dieser Situation am besten mit Nullwerten umgehen?

8voto

alex Punkte 943

Ich tendiere dazu, die Nullwerte in der SELECT-Anweisung durch etwas Geeignetes zu ersetzen.

SELECT ISNULL(firstname, '') FROM people

Hier ersetze ich jede Null durch eine leere Zeichenkette. Ihr Code wird in diesem Fall keinen Fehler auslösen.

7voto

CesarGon Punkte 14851

Vérifier sqlreader.IsDBNull(indexFirstName) bevor Sie versuchen, sie zu lesen.

6voto

getpsyched Punkte 147

Als Ergänzung zur Antwort von marc_s können Sie eine allgemeinere Erweiterungsmethode verwenden, um Werte aus dem SqlDataReader abzurufen:

public static T SafeGet<T>(this SqlDataReader reader, int col)
    {
        return reader.IsDBNull(col) ? default(T) : reader.GetFieldValue<T>(col);
    }

4voto

bytebender Punkte 7216

Ich denke, Sie sollten es verwenden:

SqlReader.IsDBNull(indexFirstName)

4voto

Kaido Punkte 3193

Keines davon war ganz das, was ich wollte:

 public static T GetFieldValueOrDefault<T>(this SqlDataReader reader, string name)
 {
     int index = reader.GetOrdinal(name);
     T value = reader.IsDBNull(index) ? default(T) : reader.GetFieldValue<T>(index);
     return value;
 }

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X