2017-05-30 69 views
-1

我有一個System.NullReferenceException錯誤mysql選擇「COMMAND.CommandText =」選擇*從用戶其中user = @user和pass = @pass「」在點擊按鈕。VB Net + Mysql + System.NullReferenceException

 MysqlConn = New MySqlConnection(ConfigurationManager.ConnectionStrings("Mydb.My.MySettings.Mydb").ToString) 
    Dim READER As MySqlDataReader 
    Me.Cursor = Cursors.WaitCursor 
    MysqlConn.Open() 
    COMMAND.CommandText = "select * from Users where user= @user and pass= @pass" 
    COMMAND.Parameters.AddWithValue("@user", If(String.IsNullOrEmpty(TextBox_Username.Text), DBNull.Value, TextBox_Username.Text)) 
    COMMAND.Parameters.AddWithValue("@pass", If(String.IsNullOrEmpty(TextBox_Password.Text), DBNull.Value, TextBox_Password.Text)) 
    COMMAND = New MySqlCommand(COMMAND.CommandText, MysqlConn) 
    READER = COMMAND.ExecuteReader 

有什麼問題?

編輯:

這是完整的代碼鍵:

MysqlConn = New MySqlConnection(ConfigurationManager.ConnectionStrings("Mydb.My.MySettings.Mydb").ConnectionString) 
    Dim READER As MySqlDataReader 
    Me.Cursor = Cursors.WaitCursor 
    MysqlConn.Open() 
    COMMAND.CommandText = "select * from Users where user= @user and pass= @pass" 
    COMMAND.Parameters.AddWithValue("@user", If(String.IsNullOrEmpty(TextBox_Username.Text), DBNull.Value, TextBox_Username.Text)) 
    COMMAND.Parameters.AddWithValue("@pass", If(String.IsNullOrEmpty(TextBox_Password.Text), DBNull.Value, TextBox_Password.Text)) 
    READER = COMMAND.ExecuteReader 
    Dim count As Integer 
    count = 0 
     While READER.Read 
      count = count + 1 
     End While 
     If count = 1 Then 
      MessageBox.Show("Usuario y Contraseña Correctos") 
      Dim role As String = READER("tipo") 
      If role = "Administrador" Then 
       Inicio.Show() 
      ElseIf role = "Calidad" Then 
       Calidad.Show() 
      ElseIf role = "Almacen" Then 
       Almacen.Show() 
      ElseIf role = "Oficina" Then 
       Oficina.Show() 
      ElseIf role = "Minas" Then 
       Minas.Show() 
      End If 
      Me.Hide() 
     ElseIf count > 1 Then 
      MessageBox.Show("Usuario y Contraseña Duplicados") 
     Else 
      MessageBox.Show("Usuario y Contraseña Incorrectos") 
     End If 
     MysqlConn.Close() 

    MysqlConn.Open() 
    COMMAND.CommandText = "insert into Registro_Login (user,fecha,ip) values (@user,@fecha,@ip)" 
    COMMAND.Parameters.AddWithValue("@user", If(String.IsNullOrEmpty(TextBox_Username.Text), DBNull.Value, TextBox_Username.Text)) 
    COMMAND.Parameters.AddWithValue("@fecha", If(String.IsNullOrEmpty(Label4.Text), DBNull.Value, Label4.Text)) 
    COMMAND.Parameters.AddWithValue("@ip", If(String.IsNullOrEmpty(Label3.Text), DBNull.Value, Label3.Text)) 
    READER = COMMAND.ExecuteReader 
    MysqlConn.Close() 
    Me.Cursor = Cursors.Default 

但同樣的問題

回答

1

COMMAND似乎正在被使用在它之前沒有定義。就像你所定義的讀者,定義命令以及再使用it.And也更改下面的代碼:

ConfigurationManager.ConnectionStrings("Mydb.My.MySettings.Mydb") 

ConfigurationManager.ConnectionStrings("Mydb.My.MySettings.Mydb").ConnectionString 

而且應該的ToString的ToString(),因爲它是一種方法。

我不確定您是否真的能夠編譯此代碼或發佈整個代碼,如果您還沒有完成,則需要提出建議解決方案。

+0

你在哪裏定義的命令對象?公共類窗體 昏暗MysqlConn – Sujith

+0

作爲的MySqlConnection 昏暗命令的MySqlCommand 昏暗的閱讀器了MySqlDataReader – Jamyz

+0

高度懷疑你的命令對象爲空 - 沒有被初始化,請調試和檢查 – Sujith

1

你的命令沒有連接集。

替換此:

COMMAND.CommandText = "select * from Users where user= @user and pass= @pass" 

COMMAND = New MySqlCommand("select * from Users where user= @user and pass= @pass", MysqlConn)