General Error no INSERT INTO com o statement

Bom dia galera, tudo bom?

Então gente estou com um problema já faz um bom tempo, procurei em vários sites e vários dias e não consegui solucionar, pensei que poderia ser o método de entrada do banco de dado que era DATE e coloquei para TEXT e nada…

O problema ocorre no comando statement.executeUpdate()

segue o código


    public void codigoPartida(String codData, int part, String data, int passadas) throws SQLException {
            int cod;
            String sql;

            sql = "SELECT COUNT(codPartida)+1 as codigo FROM partida WHERE codPartida LIKE '" + data + "*'";
            PreparedStatement prep = connect.prepareStatement(sql);
            ResultSet rs = prep.executeQuery();
            rs.next();
            int a = rs.getInt("codigo");
            int b = a / 10;
            if (b < 1) {
                cod = Integer.parseInt(codData + "00" + String.valueOf(a));
            } else if (b < 10 && b >= 1) {
                cod = Integer.parseInt(codData + "0" + String.valueOf(a));
            } else {
                cod = Integer.parseInt(codData + String.valueOf(a));
            }

            sql = "INSERT INTO partida (codPartida, codParticipante, data, passadas) VALUES (" + cod + "," + part+ ",'"+data+"'," + passadas + ")";
            Statement statement = connect.createStatement();
            statement.executeUpdate(sql);

    }

o erro é esse :


Exception in thread "AWT-EventQueue-0" java.security.PrivilegedActionException: java.security.PrivilegedActionException: java.sql.SQLException: General error
	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)
Caused by: java.security.PrivilegedActionException: java.sql.SQLException: General error
	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)
	... 9 more
Caused by: java.sql.SQLException: General error
	at sun.jdbc.odbc.JdbcOdbc.createSQLException(JdbcOdbc.java:6985)
	at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:7113)
	at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(JdbcOdbc.java:3109)
	at sun.jdbc.odbc.JdbcOdbcStatement.execute(JdbcOdbcStatement.java:337)
	at sun.jdbc.odbc.JdbcOdbcStatement.executeUpdate(JdbcOdbcStatement.java:287)
	at Classes.Conexao.codigoPartida(Conexao.java:111)
	at passadas.CadProva.btnIniciarActionPerformed(CadProva.java:189)
	at passadas.CadProva.access$100(CadProva.java:18)
	at passadas.CadProva$2.actionPerformed(CadProva.java:102)
	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: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)
	... 14 more

Se puderem me ajudar agradeço pessoal, abraços

1 - Não use, em hipótese alguma, Statement.
2 - Se está utilizando PreparedStatement, não faça isso

sql = "SELECT COUNT(codPartida)+1 as codigo FROM partida WHERE codPartida LIKE '" + data + "*'"; 

Prefira utilizar o coringa ? e então o método setTttt correspondente ao tipo de dado esperado (no caso, um setDate).
3 - Esta exception: java.security.PrivilegedActionException, indica problemas com privilégio de segurança. Qual banco de dados está utilizando?

Estou usando o access 2003 mesmo.

Então ao invés do Statement eu tenho que usar o PreparedStatement?

Ah, então está explicado o erro.
Camarada, use um banco de dados de verdade, não essa imitação barata…
Sim, o Statement é altamente vulnerável, fraco e ruim de usar.

Certo, mas não tem jeito de fazer com o access?

é que assim eu não sei mexer muito bem com MySql e como é um projetinho bem simples pensei em fazer com access mesmo, tenho outro INSERT INTO que funciona normalmente…

Vou dar uma estudada no MySQL mesmo…

Até é possível, mas eu não recomendo.
Primeiro por que ele salva os dados em arquivos muito vulneráveis.
Outra razão é que ele pode ser inconsistente, apresentar comportamento inesperado e erros mal definidos.

Certo, valeu pela ajuda cara, vou dar uma estudada mais afundo no MySql e vou fazer nele, e vou ver isso do coringa no PreparedStatement.

Cara posso te incomodar mais uma vez?

É o seguinte, como eu disse é uma aplicação bem pequena e eu tinha escolhido o Access mesmo por que ele eu iria colocar o .mdb na mesma pasta que o programa sabe, tem como eu fazer isso com o MySql ou a pessoa teria que ter o MySql instalado na máquina dela?

Valeu