2014-01-17 28 views
0

我正在研究一個我打算用用戶名保護的應用程序&存儲在MS SQL Server上的密碼。我已經嘗試了很多天,讓Visual Basics將在兩個文本框中輸入的文本與SQL數據庫上的用戶名和密碼進行比較,但我找不到一種方法來實現它。與數據庫的連接已經建立,我可以從我的應用程序處理服務器上的數據,但我無法弄清楚「比較」證書的代碼。SQL應用程序用戶名和密碼檢查

我要連接的數據庫被稱爲Members_Details,表格被稱爲Logins。該登錄表僅持有兩列Name & Passkey

我試過到目前爲止是這樣的(用戶名密碼&):

SQL = "Select * from logins " & _ 
      "where Name like '%" & Me.Usernametxt.Text.Trim & "%' AND Passkey LIKE Me.Passwordtxt.Text.Trim & "%'" 

但我不知道在哪裏後去:/

任何幫助將不勝感激,請不要安全性不是目前的問題。

+0

還要注意的是Visual Studio的是盡最大的努力幫助您找到這一個的方式它已經爲你的代碼行着色了。 – peterG

回答

0

該問題是由於在文本中嵌入了Passwordtxt文本框的值而引起的。

SQL = "Select * from logins " & _ 
     "where Name like '%" & Me.Usernametxt.Text.Trim & _ 
     "%' AND Passkey LIKE '" & Me.Passwordtxt.Text.Trim & "'" 

但是,如果你還不想在安全建議,做一個小小的一步,寫

SQL = "Select * from logins " & _ 
     "where Name like @uname " & _ 
     "AND Passkey = @pass" 

Dim sqlCommand = new SqlCommand(SQL, con) 
sqlCommand.Parameters.AddWithValue("@uname", "%" & Me.Usernametxt.Text.Trim & "%") 
sqlCommand.Parameters.AddWithValue("@pass", Me.Passwordtxt.Text.Trim) 
Using reader = cmd.ExecuteReader() 
    if reader.HasRows Then 
    ' user authenticated 

此外,通常,需要密碼準確鍵入(案敏感),因此不能使用LIKE運算符和通配符進行檢索。
通配符也有點陌生的用戶名,而這是可以接受的使用LIKE運算符,以允許用戶名不區分大小寫