Frage

Ich bin eine XML-Datei in ein DataSet zu lesen und muß die Daten aus dem DataSet zu erhalten. Da es sich um eine benutzerdefinierbare Konfigurationsdatei ist können die Felder oder nicht da sein. So behandeln Felder fehlen gut würde Ich mag jede Spalte in der DataRow, um sicherzustellen, existiert und nicht DBNull.

ich schon für DBNull überprüfen, aber ich weiß nicht, wie Sie sicher, ohne dass es die Spalte existiert, um eine Ausnahme auslösen oder mit einer Funktion, die über alle Spaltennamen Schleifen. Was ist die beste Methode, dies zu tun?

War es hilfreich?

Lösung

DataRow die sind schön in der Art und Weise, dass sie ihre zugrunde liegende Tabelle mit ihnen verbunden haben. Mit der zugrunde liegenden Tabelle können Sie überprüfen, ob eine bestimmte Zeile in eine bestimmte Spalte hat.

    If DataRow.Table.Columns.Contains("column") Then
        MsgBox("YAY")
    End If

Andere Tipps

Sie können mit DataSet.Tables(0).Columns.Contains(name) prüfen, ob die DataTable eine Spalte mit einem bestimmten Namen enthalten.

Ein weiterer Weg, um herauszufinden, ob eine Spalte ist vorhanden für Nothing zu überprüfen, den Wert aus dem Columns Sammlung Indexer zurückgegeben, wenn die Spaltennamen, um es vorbei:

If dataRow.Table.Columns("ColumnName") IsNot Nothing Then
    MsgBox("YAY")
End If

Dieser Ansatz könnte über eine bevorzugt sein, dass die Contains("ColumnName") Methode verwendet, wenn der folgende Code wird anschließend, dass DataColumn zur weiteren Verwendung erhalten müssen. Zum Beispiel möchten Sie vielleicht wissen, welche Art, die einen Wert in der Spalte gespeichert hat:

Dim column = DataRow.Table.Columns("ColumnName")
If column IsNot Nothing Then
    Dim type = column.DataType
End If

In diesem Fall wird dieser Ansatz erspart Ihnen einen Aufruf an den Contains("ColumnName") zugleich Ihren Code ein bisschen sauberer zu machen.

Sie können Ihren Code-Block mit einem try ... catch-Anweisung, kapseln und wenn Sie Ihren Code ausführen, wenn die Spalte nicht existiert es wird eine Ausnahme werfen. Anschließend können Sie herausfinden, was spezifische Ausnahme wirft es und haben es diese spezifische Ausnahme in einer anderen Art und Weise handhaben, wenn Sie es wünschen, wie Rückkehr „Spalte nicht gefunden“.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top