Syntaxe Error[RESOLVIDO]

13 respostas
F
public int excluirCarregamento(ArrayList lista_remover){
        int retorno = 0;
        try {
            conex.conectar();
            conex.conn.setAutoCommit(false);
            for(int i=0;i<lista_remover.size();i++){
                RemoverCarregamento carreg = (RemoverCarregamento) lista_remover.get(i);
                PreparedStatement query = conex.conn.prepareStatement
                        ("DELETE FROM bc5_estrutura_vdp a "
                        + "WHERE a.cod_empresa=? "
                        + "AND a.num_carregamento=? "
                        + "AND a.num_pedido=? "
                        + "AND a.num_sequencia=? "
                        + "AND a.cod_item=?;");
                query.setString(1,carreg.getCod_empresa());
                query.setInt(2,carreg.getPlano_carga());
                query.setInt(3,carreg.getNum_pedido());
                query.setInt(4,carreg.getNum_sequencia());
                query.setString(5,carreg.getCod_item());
                query.executeUpdate();
                query.close();
                
                query = conex.conn.prepareStatement
                        ("DELETE FROM bc5_mont_car_detal a "
                        + "WHERE a.cod_empresa=? "
                        + "AND a.num_carregamento=? "
                        + "AND a.num_pedido=? "
                        + "AND a.num_sequencia=? "
                        + "AND a.cod_item=?;");
                query.setString(1,carreg.getCod_empresa());
                query.setInt(2,carreg.getPlano_carga());
                query.setInt(3,carreg.getNum_pedido());
                query.setInt(4,carreg.getNum_sequencia());
                query.setString(5,carreg.getCod_item());
                query.executeUpdate();
                query.close();
                
                query = conex.conn.prepareStatement
                        ("DELETE FROM esp_etiq_lida_estr a "
                        + "WHERE a.cod_empresa=? "
                        + "AND a.num_carregamento=? "
                        + "AND a.num_pedido=? "
                        + "AND a.num_sequencia=? "
                        + "AND a.cod_item=?;");
                query.setString(1,carreg.getCod_empresa());
                query.setInt(2,carreg.getPlano_carga());
                query.setInt(3,carreg.getNum_pedido());
                query.setInt(4,carreg.getNum_sequencia());
                query.setString(5,carreg.getCod_item());
                query.executeUpdate();
                query.close();
                
                query = conex.conn.prepareStatement
                        ("DELETE FROM esp_etiq_lida_exp a "
                        + "WHERE a.cod_empresa=? "
                        + "AND a.num_carregamento=? "
                        + "AND a.num_pedido=? "
                        + "AND a.num_sequencia=?;");
                query.setString(1,carreg.getCod_empresa());
                query.setInt(2,carreg.getPlano_carga());
                query.setInt(3,carreg.getNum_pedido());
                query.setInt(4,carreg.getNum_sequencia());
                query.executeUpdate();
                query.close();
                
                query = conex.conn.prepareStatement
                        ("DELETE FROM esp_montag_carreg a "
                        + "WHERE a.cod_empresa=? "
                        + "AND a.num_carregamento=? "
                        + "AND a.num_pedido=? "
                        + "AND a.num_sequencia=?;");
                query.setString(1,carreg.getCod_empresa());
                query.setInt(2,carreg.getPlano_carga());
                query.setInt(3,carreg.getNum_pedido());
                query.setInt(4,carreg.getNum_sequencia());
                query.executeUpdate();
                query.close();
                conex.conn.commit();
            }
            conex.conn.setAutoCommit(true);
        } catch(SQLException e) {
            try {
                System.out.println("delCarregamento"+e);
                conex.conn.rollback();
                conex.conn.setAutoCommit(true);
            } catch (SQLException ex) {
                System.out.println("delCarregamento");
            }
            return -1;
        }
        return retorno;
    }

O que será que estou errando?

13 Respostas

E

O “;” é requerido quando você usa a tal ferramenta para executar SQL na mão, mas não dentro de um comando SQL com JDBC. Será isso? Não sei que banco você está usando.

nilson26

Qual foi o erro de sintax?

Execute os sqls separadamente, fica mais fácil de descobrir onde está o erro.

S

Bom dia, primeiro de tudo quando for postar um erro de sintaxe tente mostrar aonde ele está apontando o erro.

Agora a sua duvida, eu colei o seu código no meu Eclipse e ele apontou 2 coisas:

A primeira era obviamente a sua classe RemoverCarregamento, o que já era de se esperar.

O segundo erro foi no seu conex e conn.

A julgar pelo metodo que você invocou pelo conn, eu diria que ele é um java.sql.Connection. O que é esse conex?

F

Está com erro de systaxe

F

Ele nem chega a processar nenhum delete

S

Isso é muito vago. Sintaxe de SQL? Java?

F

Estou utilizando o informix,mas todo o final é uma regra dele que tem que colocar o ;

F

Na hora que cai nesta linha, do primeiro delete ele ja cai la pra baixo.

PreparedStatement query = conex.conn.prepareStatement ("DELETE FROM bc5_estrutura_vdp a "
                            + "WHERE a.cod_empresa=? "
                            + "AND a.num_carregamento=? "
                            + "AND a.num_pedido=? "
                            + "AND a.num_sequencia=? "
                            + "AND a.cod_item=?;");
F

Esse conex, e um objeto da minha classe de Conexão com o banco

S

mande imprimir o StackTrace incluindo a linha abaixo no eu código
e posta a mensagem que aparecer:

} catch(SQLException e) { 
        e.printStackTrace();  // ESSA LINHA: imprimir pilha
        try {
            ...

e acho difícil o Informix requerer “;” - normalmente ele é necessário para separar comandos num script SQL, mas não faz parte do comando SQL, que é o que é enviado pelo JDBC.
Não sei quanto ao Informix, mas os (antigos?) drivers da Oracle NÃO aceitavam “;” no final do SQL!

F

Utilizando este metodo apresenta a seguinte mensagem…

java.sql.SQLException: A syntax error has occurred.
delCarregamentojava.sql.SQLException: A syntax error has occurred.
	at com.informix.util.IfxErrMsg.getSQLException(IfxErrMsg.java:348)
	at com.informix.jdbc.IfxSqli.addException(IfxSqli.java:3000)
	at com.informix.jdbc.IfxSqli.receiveError(IfxSqli.java:3310)
	at com.informix.jdbc.IfxSqli.dispatchMsg(IfxSqli.java:2263)
	at com.informix.jdbc.IfxSqli.receiveMessage(IfxSqli.java:2183)
	at com.informix.jdbc.IfxSqli.executePrepare(IfxSqli.java:1053)
	at com.informix.jdbc.IfxResultSet.executePrepare(IfxResultSet.java:185)
	at com.informix.jdbc.IfxPreparedStatement.setupExecutePrepare(IfxPreparedStatement.java:195)
	at com.informix.jdbc.IfxPreparedStatement.<init>(IfxPreparedStatement.java:173)
	at com.informix.jdbc.IfxSqliConnect.prepareStatement(IfxSqliConnect.java:1647)
	at apontamento.control.Controlar_ExcluirCarregamento.excluirCarregamento(Controlar_ExcluirCarregamento.java:238)
	at apontamento.ControleExcluirCarregamento.btExcluir(ControleExcluirCarregamento.java:49)
	at apontamento.JFRemocaoParcialCarregamento.btnExcluirActionPerformed(JFRemocaoParcialCarregamento.java:447)
	at apontamento.JFRemocaoParcialCarregamento.access$300(JFRemocaoParcialCarregamento.java:24)
	at apontamento.JFRemocaoParcialCarregamento$2.actionPerformed(JFRemocaoParcialCarregamento.java:118)
	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 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:2719)
	at java.awt.Component.dispatchEvent(Component.java:4687)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:729)
	at java.awt.EventQueue.access$200(EventQueue.java:103)
	at java.awt.EventQueue$3.run(EventQueue.java:688)
	at java.awt.EventQueue$3.run(EventQueue.java:686)
	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:702)
	at java.awt.EventQueue$4.run(EventQueue.java:700)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:699)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
E

Felipe-san, uma coisa é o comando que você digita na sua ferramenta de SQL que se conecta com o banco.

O outro é o SQL que você usa via JDBC.

Normalmente dá para fazer menos coisas via JDBC que na ferramenta, e você não pode ou não deve usar o “;” para terminar um comando.

Para dar um exemplo: no Oracle SQL Developer e no SQL*Plus há um comando “describe” que não existe no SQL do Oracle mesmo. Já bati muito a cabeça para perceber que, para fazer a mesma coisa que o describe, teria de efetuar uma select em uma view do sistema :slight_smile:

F

Consegui resolver este erro, da seguinte forma, eu estava definindo as tabelas com o nome de a, eu tirei de todas, e deu certo.

Criado 23 de abril de 2013
Ultima resposta 23 de abr. de 2013
Respostas 13
Participantes 5