Então, ta dando um erro de sintaxe, porém quando pego a SQL gerada e jogo no servidor ela roda normalmente…
Segue códigos.
SQL:
DELETE FROM permissaoperfil WHERE idPerfil = 4 ; INSERT INTO permissaoperfil SET idPerfil = 4, idPermissao = 11 ; INSERT INTO permissaoperfil SET idPerfil = 4, idPermissao = 8 ; INSERT INTO permissaoperfil SET idPerfil = 4, idPermissao = 13 ; INSERT INTO permissaoperfil SET idPerfil = 4, idPermissao = 12 ; INSERT INTO permissaoperfil SET idPerfil = 4, idPermissao = 9 ; INSERT INTO permissaoperfil SET idPerfil = 4, idPermissao = 10 ;
ERRO:
com.mysql.jdbc.JDBC4PreparedStatement@10f0625: DELETE FROM permissaoperfil WHERE idPerfil = 4 ; INSERT INTO permissaoperfil SET idPerfil = 4, idPermissao = 11 ; INSERT INTO permissaoperfil SET idPerfil = 4, idPermissao = 8 ; INSERT INTO permissaoperfil SET idPerfil = 4, idPermissao = 13 ; INSERT INTO permissaoperfil SET idPerfil = 4, idPermissao = 12 ; INSERT INTO permissaoperfil SET idPerfil = 4, idPermissao = 9 ; INSERT INTO permissaoperfil SET idPerfil = 4, idPermissao = 10 ;
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 ‘INSERT INTO permissaoperfil SET idPerfil = 4, idPermissao = 11 ; INSERT’ at line 1
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
at com.mysql.jdbc.Util.getInstance(Util.java:381)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1030)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3558)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3490)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1959)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2109)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2648)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2077)
at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1356)
at br.com.bb.proagro.modelo.PerfisDAO.cadastraPermissoes(PerfisDAO.java:75)
at br.com.bb.proagro.controle.PerfisControle.salvarPermissoes(PerfisControle.java:36)
at br.com.bb.proagro.visao.TelaPerfis.salvar(TelaPerfis.java:87)
at br.com.bb.proagro.visao.TelaPerfis.botaoSalvarActionPerformed(TelaPerfis.java:262)
at br.com.bb.proagro.visao.TelaPerfis.access$300(TelaPerfis.java:31)
at br.com.bb.proagro.visao.TelaPerfis$4.actionPerformed(TelaPerfis.java:170)
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:6263)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3255)
at java.awt.Component.processEvent(Component.java:6028)
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:4574)
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:2475)
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)
Erro ao inserir no banco de dados: [Ljava.lang.StackTraceElement;@1bc4ec8
com.mysql.jdbc.JDBC4PreparedStatement@10f0625: DELETE FROM permissaoperfil WHERE idPerfil = 4 ; INSERT INTO permissaoperfil SET idPerfil = 4, idPermissao = 11 ; INSERT INTO permissaoperfil SET idPerfil = 4, idPermissao = 8 ; INSERT INTO permissaoperfil SET idPerfil = 4, idPermissao = 13 ; INSERT INTO permissaoperfil SET idPerfil = 4, idPermissao = 12 ; INSERT INTO permissaoperfil SET idPerfil = 4, idPermissao = 9 ; INSERT INTO permissaoperfil SET idPerfil = 4, idPermissao = 10 ;
CONSTRUÍDO COM SUCESSO (tempo total: 1 minuto 35 segundos)
CODIGO:
public boolean cadastraPermissoes(ArrayList<PermissoesVO> arrPermissoes, Integer idPerfil){
PreparedStatement pst = null;
//CADSATRANDO AS PERMISSOES
StringBuilder sql = new StringBuilder();
//Fazendo a Sql para permissoes, pra ir tudo numa soh
//apagando todos para colocar novamente
sql.append(" DELETE FROM `permissaoperfil` " +
" WHERE idPerfil = "+idPerfil+" ; ");
for (PermissoesVO permissoesVO : arrPermissoes) {
sql.append(" INSERT INTO `permissaoperfil` SET " +
" `idPerfil` = "+idPerfil+", " +
" `idPermissao` = "+permissoesVO.getId()+" ; ");
}
try {
pst = this.getConnection().prepareStatement(sql.toString());
System.out.println(pst.toString());
pst.execute();
// pst.close();
return true;
// }catch (SQLException eSQL) {
// eSQL.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
System.err.println("Erro ao inserir no banco de dados: " + e.getStackTrace()+ "\n"+pst.toString());
}
return false;
}
Alguém sabe?