Domanda

Ho una funzione che tira articoli record da un database MSSQL. Alcuni sono gli URL ai file PDF, e altri sono articoli effettivi memorizzati nel SQL. Gli articoli che vengono memorizzati non hanno un URL (DBNull) nel record, quindi voglio essere in grado di analizzare questo. Ho provato un semplice test:

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

Tuttavia, ottengo l'eccezione "Conversion from type 'DBNull' to type 'String' is not valid.". La parte divertente è, quando faccio un orologio sul quanto sopra condizionale, restituisce True o False.

Qualcuno sa perché questo sta accadendo e / o un modo per risolvere questo problema? Grazie!

È stato utile?

Soluzione

Perché non usare:

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

Altri suggerimenti

ho sempre basta usare questo test sul record:

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

Mi piace

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

Prova

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

L'errore che si sta dicendo che Row.Item("url") è un System.String modo che il valore a questo punto non sarà da DbNull.

Provare qualcosa di simile a questo:

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

Non potete fare solo

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

End If

La mia preferenza è:

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

In VB, è anche possibile utilizzare la funzione IsDBNull (Microsoft.VisualBasic diniego) direttamente:

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

Utilizzare questa.

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

Troverete che è necessario utilizzare è in questo caso e nee dto confrontare i valori non solo i tipi. Si consiglia inoltre di mettere in una funzione riutilizzabile che è possibile utilizzare per restituire nulla invece che DBNull

function checkvalue(item as object)
     if item is dbnul.value then
          return nothing
     else
          return item
     end if
 end function
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top