2017-05-30 66 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)