我有这个:
If String.IsNullOrEmpty(editTransactionRow.pay_id.ToString()) = False Then
stTransactionPaymentID = editTransactionRow.pay_id 'Check for null value
End If
Run Code Online (Sandbox Code Playgroud)
现在,什么时候editTransactionRow.pay_id
Null Visual Basic抛出异常.这段代码有问题吗?
Gar*_*ler 37
null
在VB中相当于Nothing
你的支票想要:
If editTransactionRow.pay_id IsNot Nothing Then
stTransactionPaymentID = editTransactionRow.pay_id
End If
Run Code Online (Sandbox Code Playgroud)
或者,如果您确实想要检查SQL null值:
If editTransactionRow.pay_id <> DbNull.Value Then
...
End If
Run Code Online (Sandbox Code Playgroud)
Pat*_*ins 11
editTransactionRow.pay_id是Null所以实际上你正在做:null.ToString()并且它无法执行.您需要检查editTransactionRow.pay_id而不是editTransactionRow.pay_id.ToString();
你的代码应该是(IF pay_id是一个字符串):
If String.IsNullOrEmpty(editTransactionRow.pay_id) = False Then
stTransactionPaymentID = editTransactionRow.pay_id 'Check for null value
End If
Run Code Online (Sandbox Code Playgroud)
如果pay_id是一个Integer而不是你可以检查它是否正常,没有String ...编辑,以显示它是否不是一个字符串:
If editTransactionRow.pay_id IsNot Nothing Then
stTransactionPaymentID = editTransactionRow.pay_id 'Check for null value
End If
Run Code Online (Sandbox Code Playgroud)
如果它来自数据库,您可以使用IsDBNull,但如果不是,请不要使用它.
如果您使用的是强类型数据集,那么您应该这样做:
If Not ediTransactionRow.Ispay_id1Null Then
'Do processing here
End If
Run Code Online (Sandbox Code Playgroud)
您收到错误是因为强类型数据集检索基础值并通过属性公开转换.例如,这里基本上是发生了什么:
Public Property pay_Id1 Then
Get
return DirectCast(me.GetValue("pay_Id1", short)
End Get
'Abbreviated for clarity
End Property
Run Code Online (Sandbox Code Playgroud)
GetValue方法返回DBNull,无法将其转换为short.
您还可以使用IsDBNull函数:
If Not IsDBNull(editTransactionRow.pay_id) Then
...
Run Code Online (Sandbox Code Playgroud)
小智 6
If Not IsDBNull(dr(0)) Then
use dr(0)
End If
Run Code Online (Sandbox Code Playgroud)
不要使用= Nothing
或Is Nothing
,因为它无法检查数据行值是否为null.我试过了,我确保上面的代码有效.
归档时间: |
|
查看次数: |
252517 次 |
最近记录: |