Pregunta sobre el Tipo de Comparación ASP.NET y DBNull
Pregunta
Tengo una función que extrae de los artículos registros de una base de datos MSSQL.Algunos son direcciones Url a Pdf, y otros que son artículos que se guardan en el SQL.Los artículos que se almacenan no tenemos una dirección URL (DBNull) en el registro, por lo tanto, quiero ser capaz de analizar eso.He intentado una simple prueba:
If Row.Item("url").GetType Is GetType(DBNull) Then
//' do something here....
End If
Sin embargo, me da la "Conversion from type 'DBNull' to type 'String' is not valid.
"la excepción.La parte graciosa es que cuando hago un reloj en el anterior condicional, devuelve True
o False
.
Alguien sabe por qué está pasando esto y/o una forma de arreglar esto?Gracias!
Solución
¿Por qué no usar:
If Row.IsNull("url") Then
//' do something here....
End If
Otros consejos
Siempre sólo tiene que utilizar esta prueba en el expediente:
If IsDBNull(strSQLTiggRes("url")) Then
'Do something .
Else
'do something else
end if
Me gusta
if (DBNull.Value.Equals(Row.Item("url")))
Trate
If Row.Item("url") = DBNull.Value
El error le está diciendo que es un Row.Item("url")
System.String
lo que el valor en este punto y no por DbNull
.
Trate algo como esto:
If Row.Item("url") Is Nothing Then
//' do something here....
End If
¿No puedes hacer
If Row.Item("url") = DBNull.Value Then
End If
Mi preferencia es:
If Not Object.Equals(DBNull.Value, Row.Item("url")) Then
'Hooray!
End If
En VB, también se puede utilizar la función IsDBNull
(Microsoft.VisualBasic
descargo de responsabilidad) directamente:
If Not IsDBNull(Row.Item("url")) Then
'Hooray!
End It
Utilice esta.
if row("ColumnName") is DBNull.value Then
'do something
end if
Usted encontrará que debe utilizar es en este caso y usted nee dto comparar los valores no sólo los tipos. También puede querer poner en una función reutilizable que se puede utilizar para devolver nada en lugar de DBNull
function checkvalue(item as object)
if item is dbnul.value then
return nothing
else
return item
end if
end function