2017-05-30 4 views
-1

Ich habe einen Fehler mit System.NullReferenceException mysql wählen Sie "COMMAND.CommandText =" Wählen Sie * von Benutzer, wobei Benutzer = @user und pass = @pass "" bei Klick auf die Schaltfläche.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 

Was ist los?

Edit:

Dies ist die vollständige Code-Taste:

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 

Aber das gleiche Problem

Antwort

1

COMMAND definiert werden, nicht scheint, bevor es verwendet wird. Wie Sie READER definiert haben, definieren COMMAND auch dann it.and auch unter Code ändern verwenden:

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

Um

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

Und .ToString sollte .ToString(), da es eine Methode ist.

Ich bin mir nicht sicher, ob Sie wirklich in der Lage sind, diesen Code zu kompilieren oder den gesamten Code zu veröffentlichen, der erforderlich ist, um eine Lösung vorzuschlagen, wenn Sie es nicht getan haben.

+0

Wo COMMAND Objekt, das Sie definieren:

diese ersetzen? – Sujith

+0

in Public Class Formular Dim MysqlConn Als MySqlConnection Dim-Befehl als MySqlCommand Dim Leser als MySqlDataReader – Jamyz

+0

Highly vermuten, dass Ihr COMMAND Objekt null ist - nicht initialisiert wurde, debuggen bitte und überprüfen, ob – Sujith

1

Ihr Befehl hat keine Verbindungseinstellung.

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

mit

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