Ajuda problema na hora de inserir dados no Banco.

.NET

23/06/2013

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

Curtidas 0

Respostas

Pjava

Pjava

23/06/2013

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();
            }
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

23/06/2013

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)
GOSTEI 0
Raniel Gomes

Raniel Gomes

23/06/2013

Joel mais uma vez muito obrigado era só isso mesmo abraço;
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

23/06/2013

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