0

1)これは、ユーザー名とパスワードを確認し、一致する場合はログインするための私のコードです。

Private Sub cmdOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdOK.Click
    Try
        Dim dr As OleDb.OleDbDataReader
        Dim cmd As OleDb.OleDbCommand
        Dim logQuery As String = ("SELECT * FROM Login_db where Username='" & txtUsername.Text & "'")
        cnnOLEDB.Open()
        cmd = New OleDb.OleDbCommand(logQuery, cnnOLEDB)
        dr = cmd.ExecuteReader              
        If dr.Read = True Then         <-------------------- problem

            If txtUsername.Text = dr("Username") Then
                If txtPassword.Text = dr("Password") Then
                    MsgBox("Hii")
                End If
            Else
                MsgBox("Byee")
            End If
        End If
    Catch ex As Exception
        MsgBox(ex.Message)
        cnnOLEDB.Close()
    End Try

End Sub

if dr.read=true thenテーブル内のレコードを hv しても、行は false を返します...

2)これは、ログインテーブルに新しいユーザーを追加するための私のコードです

試す

        Dim addUser As String

        addUser = "INSERT INTO Login_db(Username,Password) VALUES (@uname,@pswd)"
        cnnOLEDB.Open()

        Dim _comm As OleDb.OleDbCommand = New OleDb.OleDbCommand(addUser, cnnOLEDB)

        _comm.Parameters.AddWithValue("@uname", txtUsername.Text)
        _comm.Parameters.AddWithValue("@pswd", txtPasswd.Text)
        _comm.ExecuteNonQuery()
        cnnOLEDB.Close()

        MsgBox("Record Inserted", MsgBoxStyle.OkOnly)
    Catch ex As Exception
        MsgBox(ex.Message)
        cnnOLEDB.Close()
    End Try

エラーは次のとおりです:ステートメントへの挿入の構文エラー..エラーを見つけることができません。

私の問題を解決してください...ありがとう..

4

1 に答える 1

1

これは MS Access データベースだと思います。その場合、単語 PASSWORD は予約済みのキーワードです。
その名前を列名として使用した場合は、常に角括弧でカプセル化する必要があります。

addUser = "INSERT INTO Login_db(Username,[Password]) VALUES (@uname,@pswd)"

補足として、ユーザーを取得するための選択クエリは危険であり、ユーザー名に一重引用符 (アポストロフィ) が含まれていると失敗する可能性があり、さらに悪いことに、SQL インジェクション攻撃のベクトルになる可能性があります。挿入ステートメントで行うように、常にパラメーター化されたクエリを使用します

Dim logQuery As String = "SELECT * FROM Login_db where Username=@uname"
cnnOLEDB.Open()
cmd = New OleDb.OleDbCommand(logQuery, cnnOLEDB)
cmd.Parameters.AddWithValue("@uname", txtUserName.Text)
于 2013-04-04T09:33:42.490 に答える