【问题标题】:Vb.net Convert Integer DBNULL to 0 - errorVb.net 将整数 DBNULL 转换为 0 - 错误
【发布时间】:2012-09-17 10:58:24
【问题描述】:

我有这个方法:

Private Function convertInteger(intInteger As Object) As Integer

    If IsDBNull(intInteger) Then
        convertInteger = 0
    Else
        convertInteger = cInt(intInteger)
    End If

End Function

但它返回此错误:

没有为类型“integer”和类型“dbnull”定义运算符“=”

我正在尝试将 DBnull 值转换为 0..

但问题是我试图转换的值并不总是 DBnull.. 那么我应该如何处理呢?

【问题讨论】:

  • 你为什么不使用Nullable(Of Int32)?它有一个HasValue。财产。
  • 在项目设置中启用Option Strict然后修复编译错误。然后回到这里。
  • 哇——这解决了康拉德的问题!非常感谢!

标签: vb.net integer dbnull


【解决方案1】:

试试这个

Private Function convertInteger(intInteger As Object) As Integer

    If intInteger = DBNull.Value Then
        Return 0
    End If

    Return intInteger

End Function

按照 [Tim Schmelter] 的建议,研究 Nullable 类型

【讨论】:

  • 请不要建议使用旧的 VB 语法 methodName=returnValue,这仅出于兼容性原因。 VB.NET 和 C# 一样,它有一个返回值:return 0
  • 很抱歉。我什至没有看到函数名
【解决方案2】:

试试这个

Private Function convertInteger(ByVal intInteger As Object) as Integer
   If IsDBNull(intInteger) Then
       Return 0
   Else
       Return CInt(intInteger)
   End if
End Function

【讨论】:

    【解决方案3】:
    Private Sub readValue()
        Dim cSql As String
        Dim oCnn as OleDbConnection
        Dim oCmd as OleDbCommand
        Dim oDataReader as OleDbDataReader
        Dim valor as Integer
    
        oCnn.open()
    
        cSql = "SELECT FIELD_NAME FROM TABLE"
        oCmd = New OleDbCommand(cSql, oCnn)
        oReader = oCmd.executeReader
    
        if oReader.HasRows then
           oReader.read()
           valor = IIf(IsDBNull(oDataReader("FIELD_NAME")), 0, oDataReader("FIELD_NAME"))
        End If
    End Sub
    

    【讨论】:

    • 编辑帖子以添加正确的代码格式。还可以考虑在您的代码中添加任何解释。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多