私はこれを持っています:
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は例外をスローします。このコードに何か問題がありますか?
強く型付けされたデータセットを使用している場合、これを行う必要があります。
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を返しています。
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
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を使用できますが、そうでない場合は使用しないでください。
IsDBNull関数も使用できます。
If Not IsDBNull(editTransactionRow.pay_id) Then
...
If Not IsDBNull(dr(0)) Then
use dr(0)
End If
= Nothing
またはIs Nothing
は使用しないでください。データ行の値がnullかどうかを確認できません。試しましたが、上記のコードが機能することを確認しました。
最も安全な方法は
If Not editTransactionRow.pay_id Is Nothing
ひどく読むかもしれませんが、ISILは実際にはIsNot Nothingとは非常に異なり、式を試行して評価しないため、null参照例外が発生する可能性があります。
EditTransactionRowがnullではなく、pay_idがnullではないことを確認する必要があります。
これが正確な答えです。このコードを試してください:
If String.IsNullOrEmpty(editTransactionRow.pay_id.ToString()) = False Then
stTransactionPaymentID = editTransactionRow.pay_id 'Check for null value
End If
If Not editTransactionRow.pay_id AndAlso String.IsNullOrEmpty(editTransactionRow.pay_id.ToString()) = False Then
stTransactionPaymentID = editTransactionRow.pay_id 'Check for null value
End If
If Short.TryParse(editTransactionRow.pay_id, New Short) Then editTransactionRow.pay_id.ToString()