Pergunta

Eu tenho uma função que puxa artigos registros de um banco de dados MSSQL. Alguns são URLs para PDFs e outros são artigos reais armazenados no SQL. Os artigos que são armazenados não tem um URL (DBNull) no registro, assim que eu quero ser capaz de analisar isso. Eu tentei um teste simples:

If Row.Item("url").GetType Is GetType(DBNull) Then
    //' do something here....
End If

No entanto, recebo a exceção "Conversion from type 'DBNull' to type 'String' is not valid.". A parte engraçada é, quando eu faço uma vigilância sobre o acima condicional, ele retorna True ou False.

Alguém sabe por que isso está acontecendo e / ou uma maneira de corrigir isso? Obrigado!

Foi útil?

Solução

Por que não usar:

If Row.IsNull("url") Then
    //' do something here....
End If

Outras dicas

Eu sempre apenas usar este teste no registro:

If IsDBNull(strSQLTiggRes("url")) Then
     'Do something                   .
Else
     'do something else
end if

Eu gosto

if (DBNull.Value.Equals(Row.Item("url")))

Tente

If Row.Item("url") = DBNull.Value

O erro está lhe dizendo que Row.Item("url") é um System.String modo que o valor neste momento não vai por DbNull.

Tente algo parecido com isto:

If Row.Item("url") Is Nothing Then
    //' do something here....
End If

Você não pode simplesmente fazer

If Row.Item("url") = DBNull.Value Then

End If

A minha preferência é:

If Not Object.Equals(DBNull.Value, Row.Item("url")) Then
  'Hooray!
End If

Em VB, você pode também usar a função IsDBNull (Microsoft.VisualBasic negação) diretamente:

If Not IsDBNull(Row.Item("url")) Then
  'Hooray!
End It

Use isto.

if row("ColumnName") is DBNull.value Then
     'do something
end if

Você vai descobrir que você deve usar neste caso e você nee dto comparar os valores não apenas os tipos. Você também pode querer colocá-lo em uma função reutilizável que você pode usar para nada em vez de DBNull

retornar
function checkvalue(item as object)
     if item is dbnul.value then
          return nothing
     else
          return item
     end if
 end function
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top