2012-01-28 82 views
0

我試圖通過使用For Each語句來檢查用戶名和密碼。如果它被驗證,那麼messagebox會出現歡迎聲明,如果它沒有顯示「不正確」的消息框會一直彈出,直到完成循環表。我怎樣才能糾正這一點,只是讓它顯示一次。另外,當它確認一個新的窗口將出現在用戶名和文本框中的姓氏,我如何編輯用戶信息,然後保存到數據庫。謝謝你的幫助。驗證登錄從檢查sql表

 Private Sub Button1_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles Button1.Click 

    Dim data As New datalinq1DataContext 

    For Each row In data.Users 
     If Not row.username = TextBox1.Text And Not row.password = TextBox2.Text Then 
       Messagebox.Show("Incorrect") 
     Else 
      MessageBox.Show("Welcome " + row.fname + " " + row.lname) 
      Dim window As New Window1 
      window.TextBox1.Text = row.fname 
      window.TextBox2.Text = row.lname 
      window.TextBox3.Text = row.username 

      window.Show() 
      Exit For 
     End If 

    Next 


End Sub 

回答

2

您可以在msg框後添加一個EXIT FOR,但爲什麼在用戶表中有多個記錄被檢查。您應該將用戶表過濾爲輸入的用戶名。

+0

我已經試過了,它從來沒有幫助的退出。你能否給我舉一個你過濾的意思的例子。我是新來的使用數據庫和表。謝謝:) – TMan 2012-01-28 23:54:12

+0

它如何檢查密碼是否正確如果只是檢查用戶名? – TMan 2012-01-28 23:54:54

+0

我不太熟悉VB和LI​​NQ,但嘗試如下: 'For each row in data.Users Where username = TextBox1.Text' 然後檢查每一行的密碼(如果您可能有多行肯定由於某種原因)。 如果不是,我只是將密碼添加到where子句 – 2012-01-29 00:18:57

0

循環遍歷表中的每個用戶都會立即給出性能問題。

而不是使用foreach,試着找出爲什麼你不能訪問正確的LINQ擴展方法。您是否參考了System.LinqSystem.Data.Linq

爲用戶檢查與相應的用戶名和密碼將是正確的方法:

var potentialUser = data.Users 
          .SingleOrDefault(user => 
           user.Username == userName && 
           user.Password = passWord 
         ); 

if(potentialUser != null) 
    Messagebox.Show("Welcome") 
else 
    Messagebox.Show("Incorrect")