Domanda

Sto leggendo un file XML in un DataSet e devo estrarre i dati dal DataSet. Poiché si tratta di un file di configurazione modificabile dall'utente, i campi potrebbero essere presenti o meno. Per gestire bene i campi mancanti, vorrei assicurarmi che ogni colonna nel DataRow esista e non sia DBNull.

Cerco già DBNull ma non so come assicurarmi che la colonna esista senza che abbia generato un'eccezione o usando una funzione che scorre su tutti i nomi di colonna. Qual è il metodo migliore per farlo?

È stato utile?

Soluzione

I DataRow sono belli nel modo in cui hanno la loro tabella sottostante collegata a loro. Con la tabella sottostante puoi verificare che una riga specifica contenga una colonna specifica.

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

Altri suggerimenti

Puoi usare DataSet.Tables (0) .Columns.Contains (nome) per verificare se DataTable contiene una colonna con un nome particolare.

Un altro modo per scoprire se esiste una colonna è verificare Nothing il valore restituito dall'indicizzatore di raccolta Columns quando si passa il nome della colonna:

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

Questo approccio potrebbe essere preferito rispetto a quello che utilizza il metodo Contains (" ColumnName ") quando il seguente codice dovrà successivamente ottenere quel DataColumn per ulteriore utilizzo . Ad esempio, potresti voler sapere quale tipo ha un valore memorizzato nella colonna:

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

In questo caso questo approccio ti consente di risparmiare una chiamata a Contiene (" ColumnName ") rendendo il tuo codice un po 'più pulito.

Puoi incapsulare il tuo blocco di codice con un'istruzione try ... catch e, quando esegui il tuo codice, se la colonna non esiste genererà un'eccezione. Puoi quindi capire quale eccezione specifica viene generata e gestirla in modo diverso se lo desideri, ad esempio restituendo " Column Not Found " ;.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top