2017-05-30 5 views
-1

System.NullReferenceExceptionでエラーが発生しました。「COMMAND.CommandText =」select * from 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それが使用されている前に定義されていないことと思われます。それは方法であるとして

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

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

し、.ToStringべき.ToString():あなたがREADERを定義しているように、その後、同様のコマンドを定義するit.Andを使用し、コードの下に変更します。

私はあなたが本当にあなたがそれを行っていない場合は、解決策を提案するために必要なコード全体を、このコードをコンパイルするか、投稿することができますかどうかわからないです。

+0

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

はこれを置き換えますか? MySqlDataReader – Sujith

+0

は非常にあなたのCOMMANDオブジェクトがnullであることを疑う - 初期化されていない、デバッグし、[OK]を解決 – Jamyz

+0

としてされたMySqlCommand 薄暗いREADERとしてMySqlConnectionに 薄暗いコマンドとして公開クラスフォーム 点心MysqlConnで – Sujith

1

あなたのコマンドには、接続が設定されていません。

コマンドオブジェクトを定義している
COMMAND = New MySqlCommand("select * from Users where user= @user and pass= @pass", MysqlConn) 
関連する問題