如何使用vc.net使用executioncaler从数据库填充值

时间:2015-10-05 12:32:49

标签: vb.net

我有一个ms访问的数据库,表名为regn。我想使用命令文本和执行代码填充字段名称nocount。这是我的代码:

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
dim i as integer
    If cn.State = ConnectionState.Open Then
        cn.Close()
    End If
    cn.Open()

    cmd.CommandText = "select nocount from regn where pname='" & PNAMETextBox.Text & "' And fname='" & FNAMETextBox.Text & "' And dob='" & DOBDateTimePicker.Text & "' "
    i = cmd.ExecuteScalar

    cn.Close()

2 个答案:

答案 0 :(得分:0)

如果您显示变量i,那么您可以看到来自nocount的第一个值,其中您已满足条件。

答案 1 :(得分:0)

这假设您的连接设置在其他位置,看起来就像上面的代码片段一样。如果您只是想获得“nocount”,则需要将命令设置为连接。这是一个参数化的示例(它将保护您的SQL注入攻击):

' Assuming you're initializing the connection elsewhere, this will create the command AND set it's
' connection to your connection
Using cmd As SqlCommand = cn.CreateCommand
        ' Parameterize the SQL so it is protected from SQL injection exploits
    cmd.CommandText = "select nocount from regn where pname=@pname And fname=@fname And dob=@dob"
    cmd.Parameters.AddWithValue("@pname", PNAMETextBox.Text)
    cmd.Parameters.AddWithValue("@fname", FNAMETextBox.Text)
    cmd.Parameters.AddWithValue("@dob", DOBDateTimePicker.Text)

    ' Execute the SQL retuning the first column of the first row (e.g. the nocount from the query)
    i = cmd.ExecuteScalar
End Using

正如@Tim Schmelter指出的那样,这个命令包含一个Using,当它被使用时将正确处理它(再次,我忽略了我的例子中的连接,假设它已经设置并在其他地方正确处理)。