Inserir no banco de dados

Pessoal, esta dando o seguinte erro na hroa de eu inserir no banco de dados:

init:
deps-jar:
compile:
run:
java.sql.SQLException: Column count doesn't match value count at row 1
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1075)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3562)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3494)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1960)
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2114)
        at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2690)
        at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1648)
        at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1567)
        at Utilitarios.Conexao.insert(Conexao.java:71)
        at Cadastros.CadastrarProduto.btn_SalvarActionPerformed(CadastrarProduto.java:396)
        at Cadastros.CadastrarProduto.access$300(CadastrarProduto.java:12)
        at Cadastros.CadastrarProduto$4.actionPerformed(CadastrarProduto.java:154)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
        at java.awt.Component.processMouseEvent(Component.java:6038)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
        at java.awt.Component.processEvent(Component.java:5803)
        at java.awt.Container.processEvent(Container.java:2058)
        at java.awt.Component.dispatchEventImpl(Component.java:4410)
        at java.awt.Container.dispatchEventImpl(Container.java:2116)
        at java.awt.Component.dispatchEvent(Component.java:4240)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
        at java.awt.Container.dispatchEventImpl(Container.java:2102)
        at java.awt.Window.dispatchEventImpl(Window.java:2429)
        at java.awt.Component.dispatchEvent(Component.java:4240)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
BUILD SUCCESSFUL (total time: 45 seconds)

Codigo:

conexao.insert("INSERT INTO ce01 (id,descricao, descricaoabrev)" +
                "VALUES ('2','"+txt_DescricaoProduto.getText()+"','"+txt_DescricaoAbreviada.getText()+"','"+
                "')");


-----

public void insert(String sql){
        try {
            // cria Statement para consultar banco de dados
            statement = connection.createStatement();
            statement.executeUpdate(sql);
            
        } catch (SQLException ex) {  
            ex.printStackTrace();
        }
    }

O que acham que possa ser?

Abraços

Brother,

Concatenar string para fazer insert sempre dah errado… :wink:
Ao que parece vc está tentando inserir dados em um número diferente de colunas. Muda o seu código para usar o PreparedStatement :

http://java.sun.com/docs/books/tutorial/jdbc/basics/prepared.html

apenas completando o que o amigo marciomarinho falou, você tem 3 parâmetros para inserir e passou quatro.

conexao.insert(“INSERT INTO ce01 (id, descricao, descricaoabrev) VALUES (‘2’, '” + txt_DescricaoProduto.getText() + “’, '” + txt_DescricaoAbreviada.getText() + “’[color=red], '” + “’[/color])”);

o correto seria:

conexao.insert("INSERT INTO ce01 (id, descricao, descricaoabrev) VALUES ('2', '" + txt_DescricaoProduto.getText() + "', '" + txt_DescricaoAbreviada.getText() + "')");

[quote=wbdsjunior]apenas completando o que o amigo marciomarinho falou, você tem 3 parâmetros para inserir e passou quatro.

conexao.insert(“INSERT INTO ce01 (id, descricao, descricaoabrev) VALUES (‘2’, '” + txt_DescricaoProduto.getText() + “’, '” + txt_DescricaoAbreviada.getText() + “’[color=red], '” + “’[/color])”);

o correto seria:

conexao.insert("INSERT INTO ce01 (id, descricao, descricaoabrev) VALUES ('2', '" + txt_DescricaoProduto.getText() + "', '" + txt_DescricaoAbreviada.getText() + "')");

Aconteceu isso mesmo amigo, arrumei o codigo e agora deu certo.

Estou lendo sobre o que voce passou marciomarinho, obrigado tambem.

Abraços

Use [color=red][size=18]PreparedStatement[/size][/color] para inserir, vc elimina alguns erros bobos que vc pode cometer gerando TODO o sql via concatenação de strings E não precisa se preocupar ao inserir Strings contento aspas simples e outros caracteres de controle do sql (e evita SQL Injection).

Estou tentando ler o que o amigo de cima falou, mas nao estou conseguindo parecido com o que mostra la. :frowning:

Alguem teria algum tutorial ou link que ensine a utilizar, ou se tiver um tempinho para dar um exemplo, fico grato.

Obrigado.

Meu caro,

O link q eu te mandei é o tutorial do JDBC e vc pode usar como exemplo o código que está lá.