Problema ao inserir registro em Mysql

6 respostas
DAREK6920

A coisa toda cheira a virgula errada ou algo assim, mas o caso é que não consigo descobrir o erro neste codigo, se alguem puder me ajudar agradeço

public static String gravanovoproduto2() throws ClassNotFoundException, SQLException{ variaveis.servidor = "localhost:3306/efdpeg"; variaveis.senha = "19581964"; variaveis.login = "root"; java.sql.Connection con; java.sql.Statement st; java.sql.ResultSet rs; Class.forName("org.gjt.mm.mysql.Driver"); con = java.sql.DriverManager.getConnection("jdbc:mysql://" + variaveis.servidor + "?useUnicode=true",variaveis.login,variaveis.senha); String chav = "descr_item,tipo_item,unidadecom,preco"; String seletor = "insert into produtos(chav) values (?,?,?,?)"; java.sql.PreparedStatement exe = con.prepareStatement(seletor); //exe.setInt(1,Integer.parseInt(cod_item.getText())); exe.setString(1,descr_item.getText()); exe.setString(2,tipo_item.getText()); exe.setString(3,unidadecom.getText()); exe.setDouble(4,Double.parseDouble(preco.getText().replace(",","."))); System.out.println("vim ate aqui"); exe.execute(); variaveis.novoproduto = false; System.out.println("vim ate aqui 2"); return ""; }

O erro gerado esta aqui:

vim ate aqui

24/03/2011 18:50:53 ta01.CADPRO1 jButton1ActionPerformed

GRAVE: null

java.sql.SQLException: Column count doesnt match value count at row 1

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3593)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3525)

at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1986)

at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2140)

at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2626)

at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2111)

at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1362)

at ta01.CADPRO1.gravanovoproduto2(CADPRO1.java:1207)

at ta01.CADPRO1.jButton1ActionPerformed(CADPRO1.java:993)

at ta01.CADPRO1.access$5700(CADPRO1.java:30)

at ta01.CADPRO1$56.actionPerformed(CADPRO1.java:648)

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:6267)

at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)

at java.awt.Component.processEvent(Component.java:6032)

at java.awt.Container.processEvent(Container.java:2041)

at java.awt.Component.dispatchEventImpl(Component.java:4630)

at java.awt.Container.dispatchEventImpl(Container.java:2099)

at java.awt.Component.dispatchEvent(Component.java:4460)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)

at java.awt.Container.dispatchEventImpl(Container.java:2085)

at java.awt.Window.dispatchEventImpl(Window.java:2478)

at java.awt.Component.dispatchEvent(Component.java:4460)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

6 Respostas

Adelar

Olá,
tem uma string a mais na linha 11. Ela deveria ser:

String seletor = "insert into produtos values (?,?,?,?)";

[]'s

DAREK6920

Ela é necessária para definir quais os campos que receberão os dados. É possivel elimina-la ? Neste caso eu teria de entrar com valores para todos os campos ?

francislon

Na verdade a linha deveria ser:

String seletor = "insert into produtos("+chav+") values (?,?,?,?)";
DAREK6920

Muitissssissssimo obrigado !!!
Sabia que devia ser uma coisa muito idiota e agora sei que tinha razão !
Coisas como essa me dão vontade de voltar para a maquina de escrever de tanta raiva !
Isto é o que eu ganho por não prestar atenção.
Valeu pelas dicas !

francislon

Isso ai é cabeça cheia de trabalho. Sai do computador e vai tomar uma cerveja q vc volta ao normal.

Adelar

++ :smiley:

Criado 24 de março de 2011
Ultima resposta 24 de mar. de 2011
Respostas 6
Participantes 3