Usuário com melhor resposta
Erro Simples durante INSERT com C#

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
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
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).
-
-
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.
-
-
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
-
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