2012-01-12 121 views
0

即時通訊製作一個MySQL sigin形式,即時通訊嘗試使用我的用戶表來控制登錄訪問,但每當我輸入任何隨機字母它登錄到,而不顯示錯誤,其無效的用戶名。vb.net登錄訪問控制

這是我到目前爲止有:

Imports MySql.Data.MySqlClient 

    Public Class frmLogin 
     Private Sub cmdCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdCancel.Click 
      Application.Exit() 
     End Sub 

     Private Sub cmdLogin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdLogin.Click 
      Dim conn As New MySqlConnection 
      Dim myCommand As New MySqlCommand 

      Dim myConnString As String 
      Dim UserID As String 

      myConnString = "server=" & My.Settings.HostIP & ";" _ 
       & "user id=" & My.Settings.Username & ";" _ 
       & "password=" & My.Settings.Password & ";" _ 
       & "database=attendance" 

      conn.ConnectionString = myConnString 

      Try 
       conn.Open() 

       myCommand.Connection = conn 
       myCommand.CommandText = "SELECT user_bannerid FROM user WHERE BINARY username = ?Username" 
       myCommand.Parameters.Add("?Username", txtUsername.Text) 

       UserID = myCommand.ExecuteScalar 

       conn.Close() 

       Dim mainForm As New frmMain 
       mainForm.UserID = UserID 
       mainForm.connectionString = myConnString 
       mainForm.Show() 

       Me.Hide() 
       Me.Close() 
      Catch myerror As MySqlException 
       MessageBox.Show("Invalid User. Please Enter Your Correct Username") 
       conn.Dispose() 
      End Try 
     End Sub 

     Private Sub frmLogin_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
      Me.AcceptButton = cmdLogin 
      Me.CancelButton = cmdCancel 
     End Sub 
    End Class 

回答

2

這是因爲你沒有關閉窗體之前測試用戶ID的價值。

您還需要使用語句來確保所有一次性物品都妥善處理。

這裏是解決這兩個問題重寫:

Try 
     Using conn As New MySqlConnection 
      Using myCommand As New MySqlCommand 
       Dim myConnString As String 
       Dim UserID As String 

       myConnString = "server=" & My.Settings.HostIP & ";" _ 
        & "user id=" & My.Settings.Username & ";" _ 
        & "password=" & My.Settings.Password & ";" _ 
        & "database=attendance" 

       conn.ConnectionString = myConnString 

       conn.Open() 

       myCommand.Connection = conn 
       myCommand.CommandText = "SELECT user_bannerid FROM user WHERE BINARY username = ?Username" 
       myCommand.Parameters.Add("?Username", txtUsername.Text) 

       Dim oUserID As Object 

       oUserID = myCommand.ExecuteScalar 

       conn.Close() 

       If oUserID IsNot DBNull.Value AndAlso Not String.IsNullOrEmpty(oUserID) Then 
        Dim mainForm As New frmMain 
        mainForm.UserID = UserID 
        mainForm.connectionString = myConnString 
        mainForm.Show() 

        Me.Hide() 
        Me.Close() 
       Else 
        MessageBox.Show("Invalid User. Please Enter Your Correct Username") 
       End If 
      End Using 
     End Using 
    Catch myerror As MySqlException 
     MessageBox.Show("SQL Error" & myerror.ToString()) 
    End Try 
+0

非常感謝你:d – user1012135 2012-01-12 20:06:12