none
Erro Ao Conectar Banco de Dados Access no C# RRS feed

  • Pergunta

  • Quando tento Cadastrar, recebo a mensagem de erro: System.Data.OleDb.OleDbException: 'Número de valores da consulta e campos de destino não coincidem.'

    Código da Conexão

     private void btnCadastrar_Click(object sender, EventArgs e)
            {
                //Declaração das Variáveis
                OleDbConnection objConnection;
                OleDbCommand objCommand;
                string srtConnection;
                string srtSQL;

                //String Conexão
                srtConnection = @"Provider=Microsoft.Jet.OLEDB.4.0;Data source = C:\blablabla\Database2.mdb";

                //Criar e Abrir Conexão
                objConnection = new OleDbConnection(srtConnection);
                objConnection.Open();

                //String SQL
                srtSQL = "INSERT INTO Produto(NomeProduto, TipoProduto, ValorProduto, LucroProduto, TotalProduto) VALUES ('" + txtCP_Nome.Text + txtCP_Tipo.Text + txtCP_Valor.Text + txtCP_Lucro.Text + txtCP_Total.Text + "')";

                //Criando o Comando
                objCommand = new OleDbCommand(srtSQL, objConnection);

                //Executando o Comando SQL
                objCommand.ExecuteNonQuery();

                //Fechando a Conexão
                objConnection.Close();

            }

    Banco de Dados:

    Nome do Campo / Tipo de Dados

    CodigoProduto / Numeração Automatica

    NomeProduto / Texto Curto

    TipoProduto / Texto Curto

    ValorProduto / Moeda

    LucroProduto / Moeda

    TotalProduto / Moeda

    Como consertar?


    domingo, 28 de maio de 2017 12:40

Respostas

  • Bruna,

    altere:

                //String SQL
                srtSQL = "INSERT INTO Produto(NomeProduto, TipoProduto, ValorProduto, LucroProduto, TotalProduto) VALUES ('" + txtCP_Nome.Text + txtCP_Tipo.Text + txtCP_Valor.Text + txtCP_Lucro.Text + txtCP_Total.Text + "')";

    para:

                //String SQL
                srtSQL = "INSERT INTO Produto(NomeProduto, TipoProduto, ValorProduto, LucroProduto, TotalProduto) VALUES ('" + txtCP_Nome.Text + "', '" + txtCP_Tipo.Text + "', " + txtCP_Valor.Text + " , " + txtCP_Lucro.Text + " , " + txtCP_Total.Text + ")";
    

    Porém , essa não é a forma correta de enviar os parâmetros para a instrução sql, mas ela serve para a sua curva de aprendizagem.

    Quando você entender essa primeira parte, pesquise por SqlParameters.

    Abraço!


    Natan

    domingo, 28 de maio de 2017 15:05

Todas as Respostas

  • Bruna,

    altere:

                //String SQL
                srtSQL = "INSERT INTO Produto(NomeProduto, TipoProduto, ValorProduto, LucroProduto, TotalProduto) VALUES ('" + txtCP_Nome.Text + txtCP_Tipo.Text + txtCP_Valor.Text + txtCP_Lucro.Text + txtCP_Total.Text + "')";

    para:

                //String SQL
                srtSQL = "INSERT INTO Produto(NomeProduto, TipoProduto, ValorProduto, LucroProduto, TotalProduto) VALUES ('" + txtCP_Nome.Text + "', '" + txtCP_Tipo.Text + "', " + txtCP_Valor.Text + " , " + txtCP_Lucro.Text + " , " + txtCP_Total.Text + ")";
    

    Porém , essa não é a forma correta de enviar os parâmetros para a instrução sql, mas ela serve para a sua curva de aprendizagem.

    Quando você entender essa primeira parte, pesquise por SqlParameters.

    Abraço!


    Natan

    domingo, 28 de maio de 2017 15:05
  • Muuuuuuuuuuuuito obrigada, Natan! Deu certinho.

    Sobre SqlParameters, eu nunca ouvi falar. Você possuiu algum tipo de link de vídeo-aula, pdf ou coisa do tipo sobre? Agradeço desde já!

    • Sugerido como Resposta 'Natan Silva domingo, 28 de maio de 2017 16:24
    • Não Sugerido como Resposta 'Natan Silva domingo, 28 de maio de 2017 16:24
    domingo, 28 de maio de 2017 16:18
  • que bom que deu certo.

    veja este link http://www.devmedia.com.br/utilizando-parametros-no-sqlcommand-em-c/28440

    Não esqueça dw Marcar como resposta.


    Natan

    domingo, 28 de maio de 2017 16:26