2012-11-19 3 views
1

임은이 코드를 사용하여 :대소 문자 구분 사용자 이름과 암호

Dim con As OleDbConnection = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source= UserPass.mdb;") 
con.Open() 
Dim str As String 
str = "SELECT * FROM UserPass WHERE Username='" & txtUsername.Text & "' AND Password='" & txtPassword.Text & "'" 
Dim cmd As OleDbCommand = New OleDbCommand(str, con) 
cmd.Parameters.AddWithValue("user", txtUsername.Text) 
cmd.Parameters.AddWithValue("pass", txtPassword.Text) 
Dim sdr As OleDbDataReader = cmd.ExecuteReader() 
' It will be case sensitive if you compare usernames here. 
If sdr.HasRows Then 
    If sdr.Read Then 
     If txtPassword.Text <> sdr("Password").ToString And txtUsername.Text <> sdr("Username").ToString Then 
      MessageBox.Show(" Incorrect Username/Password. Login Denied ", " Error! ", MessageBoxButtons.OK, MessageBoxIcon.Error) 
     Else 
      MessageBox.Show(" You are now Logged In! ", " Welcome! ", MessageBoxButtons.OK, MessageBoxIcon.Asterisk) 
      frmOne.Show() 
      Me.Hide() 
     End If 
    End If 
End If 
sdr.Close() 
con.Close() 

이 그것이 문자의 경우를 확인해야합니다 라인입니다,하지만 작동하지 않습니다

If txtPassword.Text <> sdr("Password").ToString And txtUsername.Text <> sdr("Username").ToString Then 
+0

어떤 식으로 작동하지 않는 이유는 무엇입니까? –

+0

데이터베이스의 사용자 이름은 "Admin"이고 암호는 "Admin1" 사용자 이름 텍스트 상자에 "admin"을 입력하고 암호 입력란에 "admin1"을 입력하면 로그인 할 수 있습니다. –

+0

사이드 노트 : 암호를 잘못 저장하는 경우. http://www.codinghorror.com/blog/2007/09/youre-probably-storing-passwords-incorrectly.html – jeroenh

답변

4

않는 한 나는 사용자 이름과 암호가 일치하지 않는다면, 그리고 if 문에서 오해하고 있습니다. 사용중인 논리는 로그인을 거부합니다. 암호가 일치하지 않지만, 사용자가하는 경우, 다른 블록에 드롭에서 사용자를 기록합니다

가로 변경합니다 :.

If txtPassword.Text <> sdr("Password").ToString Or txtUsername.Text <> sdr("Username").ToString Then 
+0

나는 그것이 무엇 묻는 것 같아요. "if"문을 사용하지 않고 하나의 if 문에서 두 개의 문을 결합 할 수 있습니까? –