none
Referência de objeto não definida para uma instância de um objeto RRS feed

  • Pergunta

  • Buenas!

    Estou fazendo um teste simples de Isert com o Visual Studio 2015 porém na hora de gravar estou recebendo este erro.

    Alguém sabe me informar como posso estar corrigindo isto.

    Grato.

    private void GravarDados(object sender, EventArgs e)
            {
                try
                {
                    OleDbDataAdapter Adapter = new OleDbDataAdapter();
                    SqlConnection conecta = new SqlConnection("Data Source=IAGO-PC\\SERVER;Initial Catalog=Teste;Integrated Security=True");
    
                    conecta.Open();
                    
                    Adapter.InsertCommand.CommandText = "INSERT INTO tbl_User (Usuario, Senha, Status) VALUES ('@user', '@senha','@status')";
                    Adapter.InsertCommand.Parameters.Add("@user", OleDbType.VarChar).Value = txtUser.Text;
                    Adapter.InsertCommand.Parameters.Add("@senha", OleDbType.VarChar).Value = txtSenha.Text;
                    Adapter.InsertCommand.Parameters.Add("@status", OleDbType.Char).Value = comboBox1.Text;
                    Adapter.InsertCommand.ExecuteNonQuery();
    
                    conecta.Close();
                }
                catch (Exception erro)
                {
                    MessageBox.Show("Ocorreu um erro.\n\nErro: " + erro.Message, "ERRO", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }

    segunda-feira, 3 de agosto de 2015 17:38

Respostas

  • private void GravarDados(object sender, EventArgs e)
            {
                try
                {
                    OleDbDataAdapter Adapter = new OleDbDataAdapter();
                    SqlConnection conecta = new SqlConnection("Data Source=IAGO-PC\\SERVER;Initial Catalog=Teste;Integrated Security=True");
    
                    conecta.Open();
                    Adapter.InsertCommand = conecta.CreateCommand(); 
                    Adapter.InsertCommand.CommandText = "INSERT INTO tbl_User (Usuario, Senha, Status) VALUES ('@user', '@senha','@status')";
                    Adapter.InsertCommand.Parameters.Add("@user", OleDbType.VarChar).Value = txtUser.Text;
                    Adapter.InsertCommand.Parameters.Add("@senha", OleDbType.VarChar).Value = txtSenha.Text;
                    Adapter.InsertCommand.Parameters.Add("@status", OleDbType.Char).Value = comboBox1.Text;
                    Adapter.InsertCommand.ExecuteNonQuery();
    
                    conecta.Close();
                }
                catch (Exception erro)
                {
                    MessageBox.Show("Ocorreu um erro.\n\nErro: " + erro.Message, "ERRO", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }

    acho que vc não criou o comando InsertCommand, não lembro se precisa, mas você não setou a conexão no adapter. deve ser a conexão não setada, tem que inserir no construtor ou na propriedade connection sua variavel conecta. 


    Desenvolvedor de sistemas VB6, ASP, ASP.NET, C#, VB.NET, SQL Server, Oracle e MySql.

    • Sugerido como Resposta Junior Galvão - MVPMVP terça-feira, 4 de agosto de 2015 17:36
    • Marcado como Resposta Marcos SJ quinta-feira, 6 de agosto de 2015 19:59
    terça-feira, 4 de agosto de 2015 06:30

Todas as Respostas

  • Olá Iago, tudo bom?

    Esse erro acontece quando se está usando a referência de algo cujo valor está nulo.

    Use o debug para ver onde está acontecendo o erro, quando encontrar em qual linha está ocorrendo veja o porque do null. Qualquer coisa volta ae.


    Wennder Santos

    Se solucionou seu problema ou dúvida, não esqueça de marcar como resposta. Se foi util, não esqueça de marcar como util.







    terça-feira, 4 de agosto de 2015 00:01
  • private void GravarDados(object sender, EventArgs e)
            {
                try
                {
                    OleDbDataAdapter Adapter = new OleDbDataAdapter();
                    SqlConnection conecta = new SqlConnection("Data Source=IAGO-PC\\SERVER;Initial Catalog=Teste;Integrated Security=True");
    
                    conecta.Open();
                    Adapter.InsertCommand = conecta.CreateCommand(); 
                    Adapter.InsertCommand.CommandText = "INSERT INTO tbl_User (Usuario, Senha, Status) VALUES ('@user', '@senha','@status')";
                    Adapter.InsertCommand.Parameters.Add("@user", OleDbType.VarChar).Value = txtUser.Text;
                    Adapter.InsertCommand.Parameters.Add("@senha", OleDbType.VarChar).Value = txtSenha.Text;
                    Adapter.InsertCommand.Parameters.Add("@status", OleDbType.Char).Value = comboBox1.Text;
                    Adapter.InsertCommand.ExecuteNonQuery();
    
                    conecta.Close();
                }
                catch (Exception erro)
                {
                    MessageBox.Show("Ocorreu um erro.\n\nErro: " + erro.Message, "ERRO", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }

    acho que vc não criou o comando InsertCommand, não lembro se precisa, mas você não setou a conexão no adapter. deve ser a conexão não setada, tem que inserir no construtor ou na propriedade connection sua variavel conecta. 


    Desenvolvedor de sistemas VB6, ASP, ASP.NET, C#, VB.NET, SQL Server, Oracle e MySql.

    • Sugerido como Resposta Junior Galvão - MVPMVP terça-feira, 4 de agosto de 2015 17:36
    • Marcado como Resposta Marcos SJ quinta-feira, 6 de agosto de 2015 19:59
    terça-feira, 4 de agosto de 2015 06:30
  • Boa tarde,

    Por falta de retorno do usuário, esta thread será encerrada.

    Caso seja necessário, por gentileza, abra uma thread nova.

    Atenciosamente


    Marcos Roberto de Souza Junior

    Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    quinta-feira, 6 de agosto de 2015 19:59