Erro com inserção em banco de dados

Iai pessoal,

estou tendo problemas com inserção na base de dados access (lixo, lixo, lixo), alias só uso access pq sou obrigado.

Quando eu cadastro o primeiro registro ele funciona perfeitamente, mas ja no 2º ele me retorna o erro java.sql.SQLException: General error .

O que pode estar acontecendo??

Segue o código de conexão:

[code]public class ConnectionFactory {

private static final String DBNAME = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=E:/Zoo_Project/dataBase/dataBaseZoo.mdb";
private static final String DBDRIVER = "sun.jdbc.odbc.JdbcOdbcDriver";
private static final String DBROOT = "";
private static final String DBPASS = "";

public static Connection getConnection() throws SQLException{        
    
    try{
        
        Class.forName(DBDRIVER);
        return DriverManager.getConnection(DBNAME, DBROOT, DBPASS);            
        
    }catch(ClassNotFoundException e){
        throw new SQLException(e.getMessage());
    }
}

}[/code]

O código em outra classe de inserção:

[code]public synchronized void addFuncionario(Funcionario f) throws SQLException{

    PreparedStatement ps = null;
    
    try{
        String sql = "INSERT INTO funcionario (funNome, funSobrenome, funEndereco, " +
                     "funEstado, funCargo, funTel, funCel, funEmail, funSexo, funSalario, " +
                     "funCpf, funBairro) VALUES (?, ? ,? ,? ,? ,? ,? ,? ,? ,? ,? ,?)";
        
        ps = this.con.prepareStatement(sql);
        
        ps.setString(1, f.getNome());
        ps.setString(2, f.getSobrenome());
        ps.setString(3, f.getEndereco());           
        ps.setString(4, f.getEstado());
        ps.setString(5, f.getCargo());            
        ps.setString(6, f.getTel());
        ps.setString(7, f.getCel());
        ps.setString(8, f.getEmail());
        ps.setString(9, f.getSexo());
        ps.setDouble(10, f.getSalario());
        ps.setString(11, f.getCpf());
        ps.setString(12, f.getBairro());            
        ps.execute();            
        
    }catch(SQLException ex){            
        throw new SQLException(ex.getMessage());
        
    }finally{
        try{                
            ps.close();
            con.close();
            
        }catch(SQLException ex){
            ex.printStackTrace();
        }
    }
}[/code]

e a chamada do método de cadastro:

[code] private void jButtonFunSalvarActionPerformed(java.awt.event.ActionEvent evt) {

    Funcionario fun = new Funcionario();      
    
    fun.setBairro(jTextFieldFunBairro.getText());
    fun.setCargo(jTextFieldFunCargo.getText());
    fun.setCel(jFormattedTextFieldFunTel.getText());
    fun.setCpf(jFormattedTextFieldFunCpf.getText());
    fun.setEmail(jTextFieldFunEmail.getText());
    fun.setEndereco(jTextFieldFunEnd.getText());
    fun.setEstado(jTextFieldFunEst.getText());        
    fun.setNome(jTextFieldFunNome.getText());
    fun.setSalario(Double.parseDouble(jTextFieldFunSal.getText()));
    
    if(jRadioButtonFunMasc.isSelected())
        fun.setSexo("Masculino");
    else if(jRadioButtonFunFem.isSelected())
        fun.setSexo("Feminino");
    
    fun.setSobrenome(jTextFieldFunSobre.getText());
    fun.setTel(jFormattedTextFieldFunTel.getText());
    
    try {
        FuncionarioDAO dao = new FuncionarioDAO();
        dao.addFuncionario(fun);
        JOptionPane.showMessageDialog(null, "Funcionario Cadastrado com sucesso",
                "Zoológico", JOptionPane.INFORMATION_MESSAGE);
    } catch (SQLException ex) {
        ex.printStackTrace();
    }
    
    jTextFieldFunNome.requestFocus();
    this.limpar();
    
}[/code]

Alguem ai por favor pode me ajudar??
abraço

Cara a exceção é essa ai:

java.sql.SQLException: General error at classes.dataBase.dao.FuncionarioDAO.addFuncionario(FuncionarioDAO.java:68) at graphicalinterfaces.internalFrames.jInternalFrameCadFun.jButtonFunSalvarActionPerformed(jInternalFrameCadFun.java:331) at graphicalinterfaces.internalFrames.jInternalFrameCadFun.access$000(jInternalFrameCadFun.java:15) at graphicalinterfaces.internalFrames.jInternalFrameCadFun$1.actionPerformed(jInternalFrameCadFun.java:263) 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:6038) at javax.swing.JComponent.processMouseEvent(JComponent.java:3260) at java.awt.Component.processEvent(Component.java:5803) at java.awt.Container.processEvent(Container.java:2058) at java.awt.Component.dispatchEventImpl(Component.java:4410) at java.awt.Container.dispatchEventImpl(Container.java:2116) at java.awt.Component.dispatchEvent(Component.java:4240) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916) at java.awt.Container.dispatchEventImpl(Container.java:2102) at java.awt.Window.dispatchEventImpl(Window.java:2429) at java.awt.Component.dispatchEvent(Component.java:4240) at java.awt.EventQueue.dispatchEvent(EventQueue.java:599) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160) at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)

o engraçado é que quando o banco ta vazio ele insere o primeiro registro sem problema, mas a partir do segundo acontece a exceção.

alguem pode ajudar??
flw

Posta a msg de exceção completa.