Pregunta

Estoy leyendo un archivo XML en un DataSet y necesito sacar los datos del DataSet. Dado que es un archivo de configuración editable por el usuario, los campos pueden o no estar allí. Para manejar bien los campos faltantes, me gustaría asegurarme de que cada columna en el DataRow existe y no es DBNull.

Ya verifiqué DBNull, pero no sé cómo asegurarme de que la columna existe sin que haya una excepción o usar una función que recorra todos los nombres de las columnas. ¿Cuál es el mejor método para hacer esto?

¿Fue útil?

Solución

Los DataRow son agradables en la forma en que tienen su tabla subyacente vinculada a ellos. Con la tabla subyacente puede verificar que una fila específica tiene una columna específica en ella.

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

Otros consejos

Puede usar DataSet.Tables (0) .Columns.Contains (name) para verificar si DataTable contiene una columna con un nombre en particular.

Otra forma de averiguar si existe una columna es verificar Nothing el valor devuelto por el indexador de la colección Columns al pasarle el nombre de la columna:

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

Este enfoque podría preferirse al que usa el método Contains (" ColumnName ") cuando el siguiente código posteriormente deberá obtener ese DataColumn para su uso posterior . Por ejemplo, es posible que desee saber qué tipo tiene un valor almacenado en la columna:

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

En este caso, este enfoque le ahorra una llamada al Contiene (" ColumnName ") al mismo tiempo que hace que su código sea un poco más limpio.

Puede encapsular su bloque de código con una declaración try ... catch, y cuando ejecute su código, si la columna no existe, se producirá una excepción. Luego puede averiguar qué excepción específica lanza y hacer que maneje esa excepción específica de una manera diferente si así lo desea, como devolver " Columna no encontrada " ;.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top