【问题标题】:how to find out ExecuteScalar() is dbnull如何找出 ExecuteScalar() 是 dbnull
【发布时间】:2018-09-14 05:46:32
【问题描述】:

如何查看ExecuteScalar()的结果是否没有数据?检查它是不是什么都不起作用。

我的代码:

Dim cmdCode As New OracleCommand
cmdCode.Connection = sgcnn
cmdCode.CommandText = "select max(SUBSTR(client_code,4,7)) from CLIENT_INFO where (client_code Like '%' || :SysUser || '%') "
cmdCode.Parameters.Add("@SysUser", OracleDbType.Varchar2).Value = strMessage

'Dim sqlResult As Object = cmdCode.ExecuteScalar()
'If sqlResult Is Nothing Then
'    ' No result found
'    strMessage.Append("0001")
'    txtClientCode.Text = strMessage.ToString
'Else
'    'result found
'    Dim newProdID As Int32 = 0
'    newProdID = Convert.ToInt32(cmdCode.ExecuteScalar())
'    newProdID = newProdID + 1
'    strMessage.Append(newProdID.ToString("0000"))
'    txtClientCode.Text = strMessage.ToString
'End If

【问题讨论】:

    标签: vb.net if-statement dbnull executescalar


    【解决方案1】:
    If sqlResult Is DBNull.Value Then
    

    一旦你确定它不为 NULL,就不要再打电话给ExecuteScalar。你已经得到了结果,所以使用它。此外,它已经是Integer,因此无需转换。刚投:

    Dim newProdID = CInt(sqlResult) + 1
    

    【讨论】:

    • thanx , jmcilhinney
    【解决方案2】:
            If IsDBNull(cmdCode.ExecuteScalar()) Then
            '    ' No result found
            '    strMessage.Append("0001")
            '    txtClientCode.Text = ""
        Else
            '    'result found
            '    Dim newProdID As Int32 = 0
            '    newProdID = Convert.ToInt32(cmdCode.ExecuteScalar())
            '    newProdID = newProdID + 1
            '    strMessage.Append(newProdID.ToString("0000"))
            '    txtClientCode.Text = strMessage.ToString
        End If
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多