none
Erro Simples durante INSERT com C# RRS feed

  • Pergunta

  • Boa Tarde Amigos, estou obtendo esse erro durante a inserção de dados no mysql: Fatal error encountered during command execution. Esse é o meu código:

     private MySqlConnection conexao1;
    
    private void inserirInfo()
            {
    
                string link = "SERVER;DATABASE;UID;PASSWORD";
                try
                {
                    conexao1 = new MySqlConnection(link);
                    conexao1.Open();
    
                    string inserirInfoPessoal = "INSERT INTO clientes (idCliente,nomeCliente,sexoCliente,datanascimentoCliente,enderecoCliente,cidadeCliente,estadoCliente,telCliente,alturaCliente,pesoCliente,ocupacao,dataUltimaVisita,naturalidadeCliente,paiCliente,maeCliente,civilCliente) values (@cod,@nome,@sexo,@nascimento,@endereco,@cidade,@estado,@telefone,@altura,@peso,@ocupacao,@ultimaVisita,@naturalidade,@pai,@mae,@estadoCivil)";
    
                    MySqlCommand comandos = new MySqlCommand(inserirInfoPessoal, conexao1);
    
                    comandos.Parameters.Add("@cod", MySqlDbType.VarChar).Value = codClass.codNumber; ;
                    comandos.Parameters.AddWithValue("@nome", txtNome.Text);
                    comandos.Parameters.Add("@nascimento", MySqlDbType.Date).Value = txtNascimento;
                    comandos.Parameters.AddWithValue("@sexo", txtSexo.Text);
                    comandos.Parameters.AddWithValue("@naturalidade", txtNaturalidade.Text);
                    comandos.Parameters.Add("@altura", MySqlDbType.Double).Value = txtAltura;
                    comandos.Parameters.Add("@peso", MySqlDbType.Double).Value = txtPeso;
                    comandos.Parameters.AddWithValue("@ocupacao", txtOcupacao.Text);
                    comandos.Parameters.AddWithValue("@telefone", txtTelefone.Text);
                    comandos.Parameters.Add("@ultimaVisita", MySqlDbType.Date).Value = txtUltimaVisita;
                    comandos.Parameters.AddWithValue("@estadoCivil", txtCivil.Text);
                    comandos.Parameters.AddWithValue("@endereco", txtEndereco.Text);
                    comandos.Parameters.AddWithValue("@cidade", txtCidade.Text);
                    comandos.Parameters.AddWithValue("@estado", txtEstado.Text);
                    comandos.Parameters.AddWithValue("@pai", txtPai.Text);
                    comandos.Parameters.AddWithValue("@mae", txtMae.Text);
    
                    comandos.ExecuteNonQuery();
    
    
                    conexao1.Close();
                }
    
                catch (Exception ex)
                {
                    throw new Exception("Erro de conexão: " + ex.Message);
                }
            }


    • Editado robertgomez2 quinta-feira, 3 de setembro de 2015 16:37
    • Movido Durval Ramos quinta-feira, 3 de setembro de 2015 22:00 Motivo: Aumentar possibilidade de solução
    quinta-feira, 3 de setembro de 2015 16:36

Respostas

  • Olá!

       Cara, não sei se o código que você postou é exatamente o que está no seu fonte, mas me parece que faltou você adicionar o .Text nos textbox que tu está passando por parâmetro:

    comandos.Parameters.Add("@nascimento", MySqlDbType.Date).Value = txtNascimento.Text;
    comandos.Parameters.Add("@altura", MySqlDbType.Double).Value = txtAltura.Text;
    comandos.Parameters.Add("@peso", MySqlDbType.Double).Value = txtPeso.Text;
    comandos.Parameters.Add("@ultimaVisita", MySqlDbType.Date).Value = txtUltimaVisita.Text;
    
    Bom trabalho!

    • Marcado como Resposta robertgomez2 quinta-feira, 3 de setembro de 2015 22:20
    quinta-feira, 3 de setembro de 2015 18:36

Todas as Respostas

  • Boa Tarde Amigos, estou obtendo esse erro durante a inserção de dados no mysql: Fatal error encountered during command execution. Esse é o meu código:

     private MySqlConnection conexao1;
    
    private void inserirInfo()
            {
    
                string link = "SERVER;DATABASE;UID;PASSWORD";
                try
                {
                    conexao1 = new MySqlConnection(link);
                    conexao1.Open();
    
                    string inserirInfoPessoal = "INSERT INTO clientes (idCliente,nomeCliente,sexoCliente,datanascimentoCliente,enderecoCliente,cidadeCliente,estadoCliente,telCliente,alturaCliente,pesoCliente,ocupacao,dataUltimaVisita,naturalidadeCliente,paiCliente,maeCliente,civilCliente) values (@cod,@nome,@sexo,@nascimento,@endereco,@cidade,@estado,@telefone,@altura,@peso,@ocupacao,@ultimaVisita,@naturalidade,@pai,@mae,@estadoCivil)";
    
                    MySqlCommand comandos = new MySqlCommand(inserirInfoPessoal, conexao1);
    
                    comandos.Parameters.Add("@cod", MySqlDbType.VarChar).Value = codClass.codNumber; ;
                    comandos.Parameters.AddWithValue("@nome", txtNome.Text);
                    comandos.Parameters.Add("@nascimento", MySqlDbType.Date).Value = txtNascimento;
                    comandos.Parameters.AddWithValue("@sexo", txtSexo.Text);
                    comandos.Parameters.AddWithValue("@naturalidade", txtNaturalidade.Text);
                    comandos.Parameters.Add("@altura", MySqlDbType.Double).Value = txtAltura;
                    comandos.Parameters.Add("@peso", MySqlDbType.Double).Value = txtPeso;
                    comandos.Parameters.AddWithValue("@ocupacao", txtOcupacao.Text);
                    comandos.Parameters.AddWithValue("@telefone", txtTelefone.Text);
                    comandos.Parameters.Add("@ultimaVisita", MySqlDbType.Date).Value = txtUltimaVisita;
                    comandos.Parameters.AddWithValue("@estadoCivil", txtCivil.Text);
                    comandos.Parameters.AddWithValue("@endereco", txtEndereco.Text);
                    comandos.Parameters.AddWithValue("@cidade", txtCidade.Text);
                    comandos.Parameters.AddWithValue("@estado", txtEstado.Text);
                    comandos.Parameters.AddWithValue("@pai", txtPai.Text);
                    comandos.Parameters.AddWithValue("@mae", txtMae.Text);
    
                    comandos.ExecuteNonQuery();
    
    
                    conexao1.Close();
                }
    
                catch (Exception ex)
                {
                    throw new Exception("Erro de conexão: " + ex.Message);
                }
            }


    Robert,

    Considerando o seu código, troque o @ dos parâmetros para ? (interrogação)

    private MySqlConnection conexao1;

    private void inserirInfo()
    {

    string link = "SERVER;DATABASE;UID;PASSWORD";
    try
    {
    conexao1 = new MySqlConnection(link);
    conexao1.Open();

    string inserirInfoPessoal = "INSERT INTO clientes (idCliente,nomeCliente,sexoCliente,datanascimentoCliente,enderecoCliente,cidadeCliente,estadoCliente,telCliente,alturaCliente,pesoCliente,ocupacao,dataUltimaVisita,naturalidadeCliente,paiCliente,maeCliente,civilCliente) values (?cod,?nome,?sexo,?nascimento,?endereco,?cidade,?estado,?telefone,?altura,?peso,?ocupacao,?ultimaVisita,?naturalidade,?pai,?mae,?estadoCivil)";

    MySqlCommand comandos = new MySqlCommand(inserirInfoPessoal, conexao1);

    comandos.Parameters.Add("?cod", MySqlDbType.VarChar).Value = codClass.codNumber; ;
    comandos.Parameters.AddWithValue("?nome", txtNome.Text);
    comandos.Parameters.Add("?nascimento", MySqlDbType.Date).Value = txtNascimento;
    comandos.Parameters.AddWithValue("?sexo", txtSexo.Text);
    comandos.Parameters.AddWithValue("?naturalidade", txtNaturalidade.Text);
    comandos.Parameters.Add("?altura", MySqlDbType.Double).Value = txtAltura;
    comandos.Parameters.Add("?peso", MySqlDbType.Double).Value = txtPeso;
    comandos.Parameters.AddWithValue("?ocupacao", txtOcupacao.Text);
    comandos.Parameters.AddWithValue("?telefone", txtTelefone.Text);
    comandos.Parameters.Add("?ultimaVisita", MySqlDbType.Date).Value = txtUltimaVisita;
    comandos.Parameters.AddWithValue("?estadoCivil", txtCivil.Text);
    comandos.Parameters.AddWithValue("?endereco", txtEndereco.Text);
    comandos.Parameters.AddWithValue("?cidade", txtCidade.Text);
    comandos.Parameters.AddWithValue("?estado", txtEstado.Text);
    comandos.Parameters.AddWithValue("?pai", txtPai.Text);
    comandos.Parameters.AddWithValue("?mae", txtMae.Text);

    comandos.ExecuteNonQuery();

    conexao1.Close();
    }

    catch (Exception ex)
    {
    throw new Exception("Erro de conexão: " + ex.Message);
    }
    }

    Obs.: não testei, apenas modifiquei o código anexado. Os parâmetros em MySQL utilizam o ? (interrogação), enquanto o Sql Server utilizam o @ (arroba).

    quinta-feira, 3 de setembro de 2015 16:55
  • Obrigado pela atenção amigo, mas não era isso
    quinta-feira, 3 de setembro de 2015 17:18
  • Robert,

    Como eu disse, apenas modifiquei o código que foi passado, não testei, mas tenho certeza de que para funcionar (se ajustar o seu código INSERT (SQL), terá que utilizar o ?, no lugar do @, conforme indicado na mensagem anterior.

    Abs.

    quinta-feira, 3 de setembro de 2015 17:41
  • Realmente apliquei toda a mudança como você disse, creio que tenha algo a ver com a conversão Datetime, mas não faço a mínima ideia do que seja
    quinta-feira, 3 de setembro de 2015 17:44
  • Olá robertgomez2, boa tarde!

    Não foi um erro causado por exception. Coloque o breakpoint, nesta linha de código 

     conexao1 = new MySqlConnection(link);

    e vá debugando com o F11, até identificar em qual ponto ocorre o fatal error. Na aba Watch vá observando o conteúdo durante a execução. Ao cair no erro, poste aqui o print da linha com o valor da variável referente a última linha antes do erro.

     

    Lucas Lima

    quinta-feira, 3 de setembro de 2015 18:16
  • Olá!

       Cara, não sei se o código que você postou é exatamente o que está no seu fonte, mas me parece que faltou você adicionar o .Text nos textbox que tu está passando por parâmetro:

    comandos.Parameters.Add("@nascimento", MySqlDbType.Date).Value = txtNascimento.Text;
    comandos.Parameters.Add("@altura", MySqlDbType.Double).Value = txtAltura.Text;
    comandos.Parameters.Add("@peso", MySqlDbType.Double).Value = txtPeso.Text;
    comandos.Parameters.Add("@ultimaVisita", MySqlDbType.Date).Value = txtUltimaVisita.Text;
    
    Bom trabalho!

    • Marcado como Resposta robertgomez2 quinta-feira, 3 de setembro de 2015 22:20
    quinta-feira, 3 de setembro de 2015 18:36