Erro com inserção em banco de dados

2 respostas
cs.santos0

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:

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());
        }
    }
}

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

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();
            }
        }
    }

e a chamada do método de cadastro:

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();
        
    }

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

2 Respostas

cs.santos0

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

I

Posta a msg de exceção completa.

Criado 19 de outubro de 2007
Ultima resposta 19 de out. de 2007
Respostas 2
Participantes 2