[RESOLVIDO] Erro ao atualizar um tabela - Banco de dados MySql

Pessoal, tou com um problema quando vou atualizar um registro e já quebrei a cabeça procurando o erro e não consegui encontrar. Alguém pode me ajudar?

Vejam só, esse é o erro:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'idServico = 6' at line 1 at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:525) at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) at com.mysql.jdbc.Util.getInstance(Util.java:386) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1052) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3609) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3541) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2002) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2163) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2624) at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2127) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2427) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2345) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2330) at br.com.sisos.dao.ServicoDAO.alterarOs(ServicoDAO.java:92) at sisos.OsView.salvarOsSemFinalizar(OsView.java:534) at sisos.OsView.btnSalvarSemFinalizarActionPerformed(OsView.java:514) at sisos.OsView.access$000(OsView.java:24) at sisos.OsView$1.actionPerformed(OsView.java:196) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252) at com.jtattoo.plaf.BaseButtonListener.mouseReleased(Unknown Source) at java.awt.Component.processMouseEvent(Component.java:6505) at javax.swing.JComponent.processMouseEvent(JComponent.java:3321) at java.awt.Component.processEvent(Component.java:6270) at java.awt.Container.processEvent(Container.java:2229) at java.awt.Component.dispatchEventImpl(Component.java:4861) at java.awt.Container.dispatchEventImpl(Container.java:2287) at java.awt.Component.dispatchEvent(Component.java:4687) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422) at java.awt.Container.dispatchEventImpl(Container.java:2273) at java.awt.Window.dispatchEventImpl(Window.java:2713) at java.awt.Component.dispatchEvent(Component.java:4687) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707) at java.awt.EventQueue.access$000(EventQueue.java:101) at java.awt.EventQueue$3.run(EventQueue.java:666) at java.awt.EventQueue$3.run(EventQueue.java:664) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87) at java.awt.EventQueue$4.run(EventQueue.java:680) at java.awt.EventQueue$4.run(EventQueue.java:678) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:677) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:121) at java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:182) at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:221) at java.security.AccessController.doPrivileged(Native Method) at java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:219) at java.awt.Dialog.show(Dialog.java:1072) at java.awt.Component.show(Component.java:1651) at java.awt.Component.setVisible(Component.java:1603) at java.awt.Window.setVisible(Window.java:1013) at java.awt.Dialog.setVisible(Dialog.java:1003) at sisos.PrincipalIFView.btnMovimentarOSActionPerformed(PrincipalIFView.java:874) at sisos.PrincipalIFView.access$1000(PrincipalIFView.java:20) at sisos.PrincipalIFView$11.actionPerformed(PrincipalIFView.java:602) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) at javax.swing.AbstractButton.doClick(AbstractButton.java:376) at javax.swing.AbstractButton.doClick(AbstractButton.java:356) at sisos.PrincipalIFView.jXTableOSMouseClicked(PrincipalIFView.java:1015) at sisos.PrincipalIFView.access$1100(PrincipalIFView.java:20) at sisos.PrincipalIFView$12.mouseClicked(PrincipalIFView.java:636) at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:270) at java.awt.Component.processMouseEvent(Component.java:6508) at javax.swing.JComponent.processMouseEvent(JComponent.java:3321) at java.awt.Component.processEvent(Component.java:6270) at java.awt.Container.processEvent(Container.java:2229) at java.awt.Component.dispatchEventImpl(Component.java:4861) at java.awt.Container.dispatchEventImpl(Container.java:2287) at java.awt.Component.dispatchEvent(Component.java:4687) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4501) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422) at java.awt.Container.dispatchEventImpl(Container.java:2273) at java.awt.Window.dispatchEventImpl(Window.java:2713) at java.awt.Component.dispatchEvent(Component.java:4687) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707) at java.awt.EventQueue.access$000(EventQueue.java:101) at java.awt.EventQueue$3.run(EventQueue.java:666) at java.awt.EventQueue$3.run(EventQueue.java:664) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87) at java.awt.EventQueue$4.run(EventQueue.java:680) at java.awt.EventQueue$4.run(EventQueue.java:678) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:677) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105) at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

Ele dá sempre que tento atualizar uma tabela chamada Servico.
Eu chamo esse método para atualizar o registro:

public void alterarOs(ServicoBean bean) { try { pstm = (PreparedStatement) con.conectar().prepareStatement(alteraOs); pstm.setInt(1, bean.getOrcamento_Cliente_idCliente()); pstm.setInt(2, bean.getOrcamento_idOrcamento()); pstm.setDate(3, bean.getDataServico()); pstm.setString(4, bean.getNotaFiscalServico()); pstm.setString(5, bean.getDescricaoServico()); pstm.setString(6, bean.getStatusServico()); pstm.setString(7, bean.getObsServico()); pstm.setBoolean(8, bean.isFlagStatus()); pstm.setInt(9, bean.getIdServico()); pstm.executeUpdate(); } catch (SQLException ex) { JOptionPane.showMessageDialog(null, "Erro ao alterar o Ordem de Serviço\n" + ex.getMessage(), "Erro", 1); ex.printStackTrace(); } finally { con.desconectar(); } }

O parâmetro alteraOs utilizado no método acima tá assim:

String alteraOs = "UPDATE Servico SET " + "Orcamento_Cliente_idCliente = ?," + "Orcamento_idOrcamento = ?, " + "dataServico = ?, " + "notaFiscalServico = ?, " + "descricaoServico = ?," + "statusServico = ?," + "obsServico = ?," + "flagStatus = ?" + "WHERE idServico = ?";

Eu seto os valores dessa forma, na classe ServicoView:

private void salvarOsSemFinalizar() { try { servicoBean.setOrcamento_Cliente_idCliente(Integer.parseInt(getTxtCodCliente())); servicoBean.setOrcamento_idOrcamento(Integer.parseInt(getTxtCodigoOrcamento())); if (getjXDatePickerServico() != null) { //Formatar data de java.util para java.sql java.util.Date utilDateServico = getjXDatePickerServico(); java.sql.Date sqlDateServico = new java.sql.Date(utilDateServico.getTime()); servicoBean.setDataServico(sqlDateServico); } servicoBean.setNotaFiscalServico(getTxtNotaFiscal()); servicoBean.setDescricaoServico(getjXTextAreaDescricaoServico()); servicoBean.setStatusServico(getCbStatusServico()); servicoBean.setObsServico(getjXTextAreaObsServico()); servicoBean.setFlagStatus(false); servicoBean.setIdServico(Integer.parseInt(txtCodServico.getText())); servicoDAO.alterarOs(servicoBean); } catch (Exception e) { JOptionPane.showMessageDialog(null, "Erro ao movimentar a Ordem de Serviço\n" + e.getMessage(), "Erro", 1); } }

Bem é esse aí o meu erro.

Cara, nao sou muito experiente em java nao mas pelo que percebo neste seu codigo é que nao existe um espaco entre flagStatus = ? e a clausula where…
tenta acrescentar um espaco entre eles pra ver se da certo, tipo assim:

String alteraOs = "UPDATE Servico SET "
+ “Orcamento_Cliente_idCliente = ?,”
+ "Orcamento_idOrcamento = ?, "
+ "dataServico = ?, "
+ “notaFiscalServico = ?, "
+ “descricaoServico = ?,”
+ “statusServico = ?,”
+ “obsServico = ?,”
+ “flagStatus = ?”
+ " WHERE idServico = ?”; —>> aqui eu dei um espaco

espero ter ajudado

Cara, era isso mesmo. :slight_smile:

Eu procurei feito um maluco por erro nessa sintaxe, mas simplesmente ceguei, hehehe.

Valeu jufau

blz, qualquer coisa estamos aí