在VB.NET中准备查询

时间:2013-02-18 15:15:56

标签: vb.net parameters

我在使用 VB.NET 中的2个参数准备查询时遇到了麻烦。

这是我的代码:

Dim username As String = loginUsername.Value
Dim password As String = EncryptMD5standard(loginPassword.Value)
Dim valid As Boolean = False
Dim connectionString As String = ConfigurationManager.ConnectionStrings("myConnectionString").ConnectionString
        Dim queryString As String = "SELECT id, user_name, role FROM users WHERE user_name = '@user' AND paswd = '@pass'"
        Dim ds As New DataSet()
        Try
            Using connection As New SqlConnection(connectionString)
                Dim command As New SqlCommand(queryString, connection)
                connection.Open()
                command.CommandText = queryString
                command.Parameters.Add("@user", SqlDbType.NVarChar, 15).Value = username
                command.Parameters.Add("@pass", SqlDbType.NVarChar, 32).Value = password
                Dim adapter As New SqlDataAdapter()
                adapter.SelectCommand = command

                adapter.Fill(ds, "login")
                If ds.Tables("login").Rows.Count > 0 Then
                    valid = True
                End If
            End Using
        Catch ex As Exception
            errorLabel.Text = DirectCast(GetLocalResourceObject("erroreDB"), String) & ": " & ex.ToString
        End Try

但是,通过执行此操作,我的valid值始终为“false”,因此它无法计算行数。 我使用了一些调试,看起来login里面的ds表是空的。 查询工作,我在SQLServer中手动尝试替换参数,我无法理解为什么我有空结果。

我做错了什么?。

1 个答案:

答案 0 :(得分:3)

您不需要将参数包装在单引号中,因为参数系统负责处理。