0
Function Authenticate(ByVal UserName As String, ByVal Password As String)
    Dim con As New OleDbConnection(connectionstring)

    Dim cmdstring As String
    cmdstring = "SELECT username, password  FROM tblUsers where username = @user AND password = @pass"

    con.Open()

    Dim cmd As OleDbCommand = New OleDbCommand(cmdstring, con)

    cmd.Parameters.AddWithValue("@user", OleDbType.VarChar).Value = UserName
    cmd.Parameters.AddWithValue("@pass", OleDbType.VarChar).Value = Password

    Dim sdr As OleDbDataReader = cmd.ExecuteReader()
    If (sdr.HasRows) Then
        Authenticate = True
    Else
        Authenticate = False
    End If
    sdr.Close()
    con.Close()
    con = Nothing
    Return Authenticate
End Function

A scalar variable '@user' needs to be declaredこの行にヒットするとすぐに取得する理由がわからないのですが、誰でも助けてもらえますか:

Dim sdr As OleDbDataReader = cmd.ExecuteReader()
4

4 に答える 4

2

タイプではなく値を入力し、次のように関数を使用する必要があります。

cmd.Parameters.AddWithValue("@user", UserName)
cmd.Parameters.AddWithValue("@pass", PassWord)

これでエラーが解決します。ここに詳細があります: Documentation

于 2013-01-25T09:20:30.693 に答える
0

答えは次のとおりです

cmdstring = "SELECT username, password  FROM tblUsers where username = ? AND password = ?"

con.Open()

Dim cmd As OleDbCommand = New OleDbCommand(cmdstring, con)

cmd.Parameters.AddWithValue("@user", UserName)
cmd.Parameters.AddWithValue("@pass", Password)

どういうわけか、?クエリでトリックを実行します。また、addwithvaluesは、尊重された値を追加しますか?クエリで、これを見つけるのに時間がかかったので、共有すると思いました:)

于 2013-02-06T20:04:41.300 に答える
-1

文字列 Dim cmdstring As String cmdstring = "SELECT username, password FROM tblUsers where username = @user AND password = @pass" の後

cmdstring cmdstring.replace("@user","'" & UserName & "'").replace("pPassWord","'" & PassWord& "'")

適切なクエリを作成します

于 2013-01-25T14:21:45.073 に答える
-2

に変更してみて.ExecuteReader()くださいExecuteNonQuery()

Dim sdr As OleDbDataReader = cmd.ExecuteNonQuery()

ExecuteReader、ExecuteNonQuery、ExecuteScalarについての適切な説明は次のとおりです。

于 2013-01-25T09:16:52.313 に答える