Bom dia para todos,
Estou com o seguinte problema ao gravar mais de 31 campos no meu arquivo em SQLite…
java.sql.SQLException: SQLite.Exception: too much SQL parameters
Pelas minhas pesquisas na Net, não encontrei nada que me ajudasse a resolver o problema… Somente consigo atualizar o arquivo se eu der Update dos 31 primeiros campos e depois outro Update com o restante dos campos.
Acredito que tem algo relacionado a limitação de Update do SQLite… Alguem pode me ajudar por favor?
segue o codigo fonte:
Class.forName("SQLite.JDBCDriver").newInstance();
ConnBD = DriverManager.getConnection("jdbc:sqlite:"+Pasta );
try {
PreparedStatement pstmt = ConnBD.prepareStatement("UPDATE GES248 SET RAZAO_SOCIAL=?, CGC =?, IE =? , ENDERECO =?, ESTADO =?, CEP =?, " + // 6
" BAIRRO=?, IM =? , CIDADE =?, FORMA_CALC_JURO =?, SOM =?, FOTO =?, POSSUI_FILIAL =?, QTD_FUNC =?, "+ // 14
" JUROS =?, PRAZO=?, JUROS_DUPL =?, CRIA_CONTACLI=?, CRIA_CONTAFOR=?, COD_VER_FISCAL=?, COD_VER_CONTABI=?, " + // 21
"IND_ATIV=?, SCHEMANFE=?, MODBC00=?, MODBC10=?, MODBC20=?, MODBC30=?, MODBC31=?, MODBC40=?, MODBC51=?," + // 30
"MODBC60=?, MODBC70=?, MODBC90=?, MODBCST00=?, MODBCST10=?, MODBCST20=?, MODBCST30=?, MODBCST31=?, " + // 38
"MODBCST40=?, MODBCST51=?, MODBCST60=?, MODBCST70=?, MODBCST90=?, NIRE=? " + // 44
" WHERE CODIGO = ?" ); // 45
pstmt.setString(1, jCampoRazaoSocial.getText().trim());
pstmt.setString(2, jCampoCNPJ.getText().trim());
pstmt.setString(3, jCampoIE.getText().trim());
pstmt.setString(4, jEndereco.getText().trim());
pstmt.setString(5, jUFEmpresa.getText().trim());
pstmt.setString(6, jCEP.getText().trim());
pstmt.setString(7, jBairroEmpresa.getText().trim());
pstmt.setString(8, jIM.getText().trim());
pstmt.setString(9, jMunicipioEmpresa.getText().trim());
pstmt.setString(10, jFormaCalculoJuros.getText().trim());
pstmt.setString(11, jSomErro.getText().trim());
pstmt.setString(12, jFoto.getText().trim());
pstmt.setString(13, jPossuiFilial.getText().trim());
pstmt.setInt(14, (Integer.valueOf(((jQtdFuncEmpresa.getText())).trim())));
ConvDouble = new ConverteDouble(jJurosProCheque.getText().trim(), "G");
ValorConv = ConvDouble.getValorConv();
pstmt.setDouble(15, ValorConv);
pstmt.setInt(16, (Integer.valueOf(((jToleranciaAtrazo.getText())).trim())));
ConvDouble = new ConverteDouble(jPercJurosDuplicata.getText().trim(), "G");
ValorConv = ConvDouble.getValorConv();
pstmt.setDouble(17, ValorConv);
pstmt.setString(18, jCRIACONTACLI.getText().trim());
pstmt.setString(19, jCRIACONTAFOR.getText().trim());
pstmt.setString(20, jCODVERFISCAL.getText().trim());
pstmt.setString(21, jCODVERCONTABIL.getText().trim());
pstmt.setString(22, jINDATIV.getText().trim());
pstmt.setString(23, jSCHEMANFE.getText().trim());
pstmt.setString(24, jMODBC00.getText().trim());
pstmt.setString(25, jMODBC10.getText().trim());
pstmt.setString(26, jMODBC20.getText().trim());
pstmt.setString(27, jMODBC30.getText().trim());
pstmt.setString(28, jMODBC31.getText().trim());
pstmt.setString(29, jMODBC40.getText().trim());
pstmt.setString(30, jMODBC51.getText().trim());
pstmt.setString(31, jMODBC60.getText().trim());
pstmt.setString(32, jMODBC70.getText().trim());
pstmt.setString(33, jMODBC90.getText().trim());
pstmt.setString(34, jMODBCST00.getText().trim());
pstmt.setString(35, jMODBCST10.getText().trim());
pstmt.setString(36, jMODBCST20.getText().trim());
pstmt.setString(37, jMODBCST30.getText().trim());
pstmt.setString(38, jMODBCST31.getText().trim());
pstmt.setString(39, jMODBCST40.getText().trim());
pstmt.setString(40, jMODBCST51.getText().trim());
pstmt.setString(41, jMODBCST60.getText().trim());
pstmt.setString(42, jMODBCST70.getText().trim());
pstmt.setString(43, jMODBCST90.getText().trim());
pstmt.setString(44, jNIRE.getText().trim());
pstmt.setString(45 ,jCampoCodigo.getText().trim());
pstmt.executeUpdate();
pstmt.close();
} catch ( SQLException sqlex ) {
sqlex.printStackTrace();
JOptionPane.showMessageDialog( null,"Erro na atualização cadastro de empresa(GES248)");
}
e o erro :
java.sql.SQLException: SQLite.Exception: too much SQL parameters
at SQLite.JDBC2x.JDBCStatement.executeQuery(JDBCStatement.java:121)
at SQLite.JDBC2x.JDBCPreparedStatement.executeUpdate(JDBCPreparedStatement.java:75)
at sce.Cadastros.GES248.GravaDados(GES248.java:2852)
at sce.Cadastros.GES248.jButtonGrava1ActionPerformed(GES248.java:2702)
at sce.Cadastros.GES248.access$500(GES248.java:23)
at sce.Cadastros.GES248$17.actionPerformed(GES248.java:517)
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.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272)
at java.awt.Component.processMouseEvent(Component.java:6134)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5899)
at java.awt.Container.processEvent(Container.java:2023)
at java.awt.Component.dispatchEventImpl(Component.java:4501)
at java.awt.Container.dispatchEventImpl(Container.java:2081)
at java.awt.Component.dispatchEvent(Component.java:4331)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4301)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3965)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3895)
at java.awt.Container.dispatchEventImpl(Container.java:2067)
at java.awt.Window.dispatchEventImpl(Window.java:2458)
at java.awt.Component.dispatchEvent(Component.java:4331)
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)