Ajuda problema na hora de inserir dados no Banco.
Galera não consigo entender o erro que está ocorrendo já retirei varios tipos de dados mais nada.
SQL do meu banco:
Agora a classe dados:
Agora o método que criei dentro do meu Form:
Código do botão Gravar:
Obs: olha o erro que está ocorrendo = "Column count doen´t match value count at row1";
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
Curtidas 0
Respostas
Pjava
23/06/2013
Eu fiz dessa forma e funciona sem problema.
E essa é minha chamada no OnClick do botão
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
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
23/06/2013
Joel mais uma vez muito obrigado era só isso mesmo abraço;
GOSTEI 0
Joel Rodrigues
23/06/2013
Legal, fico feliz por ter ajudado.
Estou então marcando o tópico como Concluído.
Grande abraço.
Estou então marcando o tópico como Concluído.
Grande abraço.
GOSTEI 0