web-dev-qa-db-ja.com

VB.NETでNull値を確認する方法

私はこれを持っています:

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

今、editTransactionRow.pay_id is Null Visual Basicは例外をスローします。このコードに何か問題がありますか?

17
Dan

強く型付けされたデータセットを使用している場合、これを行う必要があります。

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

厳密に型指定されたデータセットが基になる値を取得し、プロパティを介して変換を公開するため、エラーが発生します。たとえば、基本的には次のようになります。

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

GetValueメソッドは、ショートに変換できないDBNullを返しています。

8
Micah

VBのnullと同等のものはNothingなので、チェックは次のようになります。

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

または、SQL null値を実際に確認したい場合:

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

editTransactionRow.pay_idはNullであるため、実際にはnull.ToString()を実行しており、実行できません。 editTransactionRow.pay_id.ToString()ではなく、editTransactionRow.pay_idを確認する必要があります。

コードは次のとおりです(pay_idが文字列の場合):

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

Pay_idがIntegerの場合、Stringなしで通常nullかどうかを確認できます...編集して、Stringでないかどうかを表示します。

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

データベースからのものである場合はIsDBNullを使用できますが、そうでない場合は使用しないでください。

11

IsDBNull関数も使用できます。

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

= NothingまたはIs Nothingは使用しないでください。データ行の値がnullかどうかを確認できません。試しましたが、上記のコードが機能することを確認しました。

6
Arunsai

最も安全な方法は

If Not editTransactionRow.pay_id Is Nothing

ひどく読むかもしれませんが、ISILは実際にはIsNot Nothingとは非常に異なり、式を試行して評価しないため、null参照例外が発生する可能性があります。

4
stuartdotnet

EditTransactionRowがnullではなく、pay_idがnullではないことを確認する必要があります。

1
Zachary Yates

これが正確な答えです。このコードを試してください:

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