Array
(
)

Ajuda problema na hora de inserir dados no Banco.

Raniel Nogueira
   - 23 jun 2013

Galera não consigo entender o erro que está ocorrendo já retirei varios tipos de dados mais nada.
SQL do meu banco:
#Código

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:
#Código
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:
#Código
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:
#Código
 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";

Pjava
   - 23 jun 2013

Eu fiz dessa forma e funciona sem problema.

#Código

 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

#Código
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();
            }

0
|
0

Joel Rodrigues
   - 23 jun 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:
#Código

INSERT INTO clientes (Nome, Endereco, Telefone) VALUES (@Nome, @Endereco, @Telefone)

0
|
0

Raniel Nogueira
   - 23 jun 2013

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

0
|
0

Joel Rodrigues
   - 23 jun 2013

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

0
|
0