Ajuda problema na hora de inserir dados no Banco.

23/06/2013

0

Galera não consigo entender o erro que está ocorrendo já retirei varios tipos de dados mais nada.

SQL do meu banco:
CREATE TABLE `clientes` (
  `IdCliente` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `Nome` varchar(50) NOT NULL,
  `Endereco` varchar(40) NOT NULL,
  `Telefone` varchar(20) NOT NULL,
  PRIMARY KEY (`IdCliente`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;



Agora a classe dados:
public class Dados
    {
        //Variavel que receberá a string de Conexão
        public string strConexao = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;

        public const string strDelete = "DELETE FROM clientes WHERE IdCliente = @IdCliente";
        public const string strInsert = "INSERT INTO clientes VALUES"+"(@Nome, @Endereco, @Telefone)";
        

        public void Gravar(string Nome, string Endereco, string Telefone)
        {
            using (MySqlConnection objConexao = new MySqlConnection(strConexao))
            { 
                using (MySqlCommand objCommand = new MySqlCommand(strInsert,objConexao))
                {
                    objCommand.Parameters.AddWithValue("@Nome",Nome);
                    objCommand.Parameters.AddWithValue("@Endereco", Endereco);
                    objCommand.Parameters.AddWithValue("@Telefone", Telefone);
                    
                   
                    objCommand.Connection.Open();

                    objCommand.ExecuteNonQuery();

                    objCommand.Connection.Close();
                }
            }
        }


Agora o método que criei dentro do meu Form:

private void Gravar(string Nome,string Endereco, string Telefone)
        {
            Dados objDados = new Dados();
         
            try
            {
                objDados.Gravar(Nome, Endereco,Telefone);
            }
            catch (Exception e)
            {
                MessageBox.Show("Ocorreu o erro:" + e.Message);
            }
            }



Código do botão Gravar:

 private void btnGravar_Click(object sender, EventArgs e)
        {
                Gravar(txtNome.Text,txtEndereco.Text,txtTelefone.Text);
        }


Obs: olha o erro que está ocorrendo = "Column count doen´t match value count at row1";
Raniel Gomes

Raniel Gomes

Responder

Posts

23/06/2013

Pjava

Eu fiz dessa forma e funciona sem problema.

 public void insereRamo(string ramo)
        {
            try
            {
                conexao.ConnectionString = ConfigurationManager.ConnectionStrings["connJuridico"].ConnectionString;
                conexao.Open();

                string sql = "insert into tbl_Ramo(nm_ramo) values(@nome_ramo)";

                cmd.CommandText = sql;
                cmd.Connection = conexao;
                cmd.Parameters.AddWithValue("nome_ramo", ramo.Trim());

                cmd.ExecuteNonQuery();
            }
            finally
            {
                cmd.Dispose();
                cmd = null;
                conexao.Close();
                conexao = null;
            }
        }


E essa é minha chamada no OnClick do botão

protected void btnGravar_OnClick(object sender, EventArgs e)
        {
            EntradaDados dados = new EntradaDados();
            try
            {
                string mensagem = "Ramo incluido com sucesso!";
                dados.insereRamo(edtEntradaRamo.Text);
                ClientScript.RegisterClientScriptBlock(this.GetType(), "MensagemDeAlert", "alert('" + mensagem + "');", true);
                limpaCampos();
            }
Responder

23/06/2013

Joel Rodrigues

Opa, amigo. Veja só, com você tem o campo IdCliente na tabela e ele é auto-incremento, você não passa ele no insert, certo? Então, como nem todos os campos da tabela são preenchidos com parâmetros, você precisa especificar quais serão preenchidos. No caso, você deve listar os campos dentro de parênteses antes de informar seus valores. Ficaria assim:
INSERT INTO clientes (Nome, Endereco, Telefone) VALUES (@Nome, @Endereco, @Telefone)
Responder

23/06/2013

Raniel Gomes

Joel mais uma vez muito obrigado era só isso mesmo abraço;
Responder

23/06/2013

Joel Rodrigues

Legal, fico feliz por ter ajudado.
Estou então marcando o tópico como Concluído.
Grande abraço.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar