2009-09-21 11 views
0

Je récupère des données de la base de données comme ci-dessous. Comment puis-je vérifier si la valeur extraite de la base de données est nulle?Comment vérifier si c'est null?

Private Function GetBatch() As DataSet 
     Dim dataset As New DataSet 
     Dim adapter As Data.SqlClient.SqlDataAdapter 
     Dim cn As New System.Data.SqlClient.SqlConnection(connectionstring()) 
     GetBatchCommand.Connection = cn 
     adapter = New Data.SqlClient.SqlDataAdapter(GetBatchCommand) 
     adapter.Fill(dataset) 
     Return dataset 
End Function 

Dim dataset As New DataSet 
      dataset = GetBatch() 

With dataset.Tables(0) 

Dim PersonID As String = .Rows(int).Item("personId") 

Je voudrais vérifier si personID est nul. Comment faire ça?

Répondre

3
If DBNull.Value.Equal(.Rows(int).Item("personId")) Then 
... 

DBNull

6

Essayez DataRow's IsNull method vérifier les valeurs NULL:

Dim isPersonIDNull As Boolean = .Rows(0).IsNull("personId") 

Ou utilisez IsDBNull method:

Dim isPersonIDNull As Boolean = IsDBNull(.Rows(int).Item("personId")) 

ou manuellement Vérifiez si la valeur est égale à DBNull:

Dim isPersonIDNull As Boolean = .Rows(int).Item("personId").Equals(DBNull.Value) 
0

Vous devez vérifier si la valeur est null avant de l'affecter à PersonID

aime:

if .Rows(int).Item("personId") = DBNull.Value Then 
    ' Assign some Dummy Value 
    PersonID = "" 
else 
    PersonID = .Rows(int).Item("personId") 
end if 

Je recommande d'extraire ce morceau de code dans une méthode d'assistance qui obtient soit la valeur ou par défaut pour une colonne donnée.

0

Cette situation peut se produire si table avec aucune ligne, que le temps ds.Table (0) .Rows (int) .Item ("personId") renverra exception de référence null

donc vous devez utiliser deux conditions

Dim PersonID As String ="" 
if(ds.tables.count>0) Then 
if(ds.tables(0).Rows.Count>0) Then 
    if(NOT DBNull.Value.Equal((ds.tables(0).Rows(int).Item("PersonID"))) Then 
       PersonID = ds.tables(0).Rows(int).Item("PersonID") 

Je pense que cela va résoudre votre issue..just mineure variation de syntaxe peut être présent

Questions connexes