web-dev-qa-db-fra.com

Comment vérifier une valeur Null dans VB.NET

J'ai ceci:

If String.IsNullOrEmpty(editTransactionRow.pay_id.ToString()) = False Then
    stTransactionPaymentID = editTransactionRow.pay_id 'Check for null value
End If

Maintenant, quand editTransactionRow.pay_id est Null Visual Basic lève une exception. Y a-t-il un problème avec ce code?

17
Dan

Si vous utilisez un ensemble de données fortement typé, vous devez procéder comme suit:

If Not ediTransactionRow.Ispay_id1Null Then
    'Do processing here
End If

Vous obtenez l'erreur car un ensemble de données fortement typé récupère la valeur sous-jacente et expose la conversion via la propriété. Par exemple, voici essentiellement ce qui se passe:

Public Property pay_Id1 Then
   Get
     return DirectCast(me.GetValue("pay_Id1", short)
   End Get
   'Abbreviated for clarity
End Property

La méthode GetValue renvoie DBNull qui ne peut pas être converti en short.

8
Micah

L'équivalent de null dans VB est Nothing donc votre chèque veut être:

If editTransactionRow.pay_id IsNot Nothing Then
    stTransactionPaymentID = editTransactionRow.pay_id
End If

Ou peut-être, si vous souhaitez réellement rechercher une valeur nulle SQL:

If editTransactionRow.pay_id <> DbNull.Value Then
    ...
End If
35
Garry Shutler

editTransactionRow.pay_id est Null, donc en fait vous faites: null.ToString () et il ne peut pas être exécuté. Vous devez vérifier editTransactionRow.pay_id et non editTransactionRow.pay_id.ToString ();

Votre code devrait être (SI pay_id est une chaîne):

If String.IsNullOrEmpty(editTransactionRow.pay_id) = False Then
    stTransactionPaymentID = editTransactionRow.pay_id 'Check for null value
End If

Si pay_id est un Integer, vous pouvez simplement vérifier s'il est normalement nul sans String ... Modifier pour vous montrer si ce n'est pas une String:

If editTransactionRow.pay_id IsNot Nothing Then
    stTransactionPaymentID = editTransactionRow.pay_id 'Check for null value
End If

Si c'est à partir d'une base de données, vous pouvez utiliser IsDBNull mais sinon, ne l'utilisez pas.

11
Patrick Desjardins

Vous pouvez également utiliser la fonction IsDBNull:

If Not IsDBNull(editTransactionRow.pay_id) Then
...
8
Aaron G
If Not IsDBNull(dr(0)) Then
    use dr(0)
End If

N'utilisez pas = Nothing ou Is Nothing, car il ne parvient pas à vérifier si la valeur de la datarow est nulle ou non. J'ai essayé et je m'assure que le code ci-dessus a fonctionné.

6
Arunsai

Je trouve que le moyen le plus sûr est

If Not editTransactionRow.pay_id Is Nothing

Il peut lire terriblement, mais ISIL est en fait très différent de IsNot Nothing, et il n'essaie pas d'évaluer l'expression, ce qui pourrait donner une exception de référence nulle.

4
stuartdotnet

Vous devez vérifier que editTransactionRow n'est pas nul et pay_id n'est pas nul.

1
Zachary Yates

Telle est la réponse exacte. Essayez ce code:

If String.IsNullOrEmpty(editTransactionRow.pay_id.ToString()) = False Then
    stTransactionPaymentID = editTransactionRow.pay_id 'Check for null value
End If
1
D Infosystems
If Not editTransactionRow.pay_id AndAlso String.IsNullOrEmpty(editTransactionRow.pay_id.ToString()) = False Then
    stTransactionPaymentID = editTransactionRow.pay_id 'Check for null value
End If
0
Vincent
 If Short.TryParse(editTransactionRow.pay_id, New Short) Then editTransactionRow.pay_id.ToString()
0
Shawn