2012-11-19 27 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語句中,如果用戶名和密碼都不匹配,那麼您使用的邏輯將只會拒絕登錄。如果密碼不匹配,但用戶確實,這將下降到else塊和登錄的用戶

嘗試將其更改爲:

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

我想這就是我要求的。我如何將兩個語句合併成一個if語句而不使用「And」 –

相關問題