2016-05-16 11 views
0

私はVB.NETで開発したシステムを使用して登録するとこの奇妙な問題を抱えていますが、正しいログイン情報を使ってログインすることはできません私が登録したユーザー名とパスワード。しかし、Accessデータベース内にユーザー名とパスワードを手動で入力すると、問題なくログインできます。ここに私のログインのコードがあるとVB.Net 2013(VBはアクセスデータベースを検索できません)

ログイン

conn = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source= C:\Users\lenovo\Documents\Visual Studio 2012\Projects\SDP user interface\SDP user interface\bin\Debug\SCPdatabase.accdb") 

    conn.Open() 

    sql = "Select * FROM Members WHERE Username ='" & txtusername.Text & "' AND [Password] ='" & txtpassword.Text & " ' " 

    cmd = New OleDbCommand(sql, conn) 

    dr = cmd.ExecuteReader() 

    If dr.HasRows Then 
     MessageBox.Show("Login Success") 
     Me.Hide() 
     Member_Page.Show() 
     Member_Page.lblwelcome.Text = "Welcome" & txtusername.Text 
    Else 
     MessageBox.Show("Login Failed") 
    End If 

    dr.Close() 
    conn.Close() 

登録

Dim flag As Integer 

    MyConn.Open() 

    sql = "Insert INTO Members (Username,[IC],Email,PhoneNumber,FullName,[Password],Newsletter) values (' " & txtusername3.Text & "','" & txtic3.Text & "','" & txtemail3.Text & "','" & txtphone3.Text & "','" & txtname3.Text & "', ' " & txtpwd3.Text & " ',' " & cmb3.Text & " ')" 

    cmd = New OleDbCommand(sql, MyConn) 

    flag = cmd.ExecuteNonQuery() 

    If flag > 0 Then 

     MessageBox.Show(flag & " records added", "Add Records Successful", MessageBoxButtons.OK, MessageBoxIcon.Information) 
    End If 
    MyConn.Close() 'closes the connection 

のthnx

答えて

0

あなたINSERT文が値に空白文字を追加してアドバイスをしてください登録:

' " & txtusername3.Text & "' 
^--- here 

' " & txtpwd3.Text & " ' 
^--- here   ^--- here 

など

しかし、その後、あなたがテーブルから選択したとき、あなたはそれらを含まない:彼らは「として

WHERE Username ='" & txtusername.Text & "' AND [Password] ='" & txtpassword.Text & " ' 
                     just here ---^ 

は、完全に空白文字を取り除きますそれらの値が期待する値から値を変更し直します。

query parametersを使用してください。最初にこれらの文字列値を手動で作成する必要はありません。 (そして、ボーナスとして、あなたが現在持っている膨大なSQLインジェクションの脆弱性を解消するでしょう)

+0

ありがとう!すぐに私の問題を解決しました。 –

関連する問題