如何检查值是否存在于vb中的字段中

时间:2019-05-24 15:07:27

标签: vb.net

我正在尝试读取从sp。中获取的字段的值。 如果该值不在sp中,则出现异常。 在读取值之前如何检查该值是否存在。下面是我的代码。 我正在尝试读取出价的值

With objCmdReq
.ActiveConnection = adoConnectionQuery
.CommandTimeout = 12000
.CommandText = "dbo.get_bid"
.Parameters.Append .CreateParameter("@id", adVarChar, 
adParamInput, 32, strClaimFriendly)
.CommandType = adCmdStoredProc
.Execute
End With


Set recClaim = New ADODB.Recordset
recClaim.CursorLocation = adUseServer
recClaim.Open objCmdReq, , adOpenStatic, adLockReadOnly

bid=recClaim.fields("bid").Value

1 个答案:

答案 0 :(得分:0)

通常,我们在vb.net中使用ADO.net。以下代码适用于Sql Server。

我使用了“如果存在”和“选择存在”参数。它将为True返回1,为False返回0。 ExecuteScalar返回结果集的第一行,第一列,该结果集将转换为布尔值。

这应该比返回Count(*)更快,因为一旦找到匹配项,它将立即停止。当然,如果没有匹配项,它们将相同。

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim strClaimFriendly = TextBox1.Text
    Dim Exists As Boolean
    Using cn As New SqlConnection("Your connection string")
        Using cmd As New SqlCommand("if exists(select 1 from YourTable where id = @ID) Select 1 Else Select 0;", cn)
            cmd.Parameters.Add("@ID", SqlDbType.VarChar).Value = strClaimFriendly
            cn.Open()
            Exists = CBool(cmd.ExecuteScalar)
        End Using
    End Using
    MessageBox.Show($"Exists = {Exists}")
End Sub