我正在尝试读取从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
答案 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