Как выяснить, ExecuteScalar () является dbnull - PullRequest
0 голосов
/ 14 сентября 2018

Как проверить, нет ли в результате 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

Ответы [ 2 ]

0 голосов
/ 15 сентября 2018
        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
0 голосов
/ 14 сентября 2018
If sqlResult Is DBNull.Value Then

Как только вы установили, что это не NULL, не ходите и не звоните ExecuteScalar снова.Вы уже получили результат, так что используйте его.Кроме того, это уже Integer, поэтому нет необходимости конвертировать.Только что произнесла:

Dim newProdID = CInt(sqlResult) + 1
...