Erro ao conectar Banco de dados e formulário

Estou tendo problemas ao conectar banco de dados e formulários java. O banco foi devidamente criado da maneira requerida para o funcionamento da aplicação, mas não estou conseguindo encontrar o erro e resolve-lo. Seria de grande ajuda se alguém me desse uma luz. Aí vão as classes:

FormFuncionario

package locadora.classes;

import java.sql.*;
import javax.swing.JOptionPane;

public class FormFuncionario extends javax.swing.JFrame {

      private String tipo;
    public FormFuncionario() {
        initComponents();
         buttonGroup1.add(jRadioButton1);
         buttonGroup1.add(jRadioButton2);
         buttonGroup1.add(jRadioButton3);
    }

  
    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        buttonGroup1 = new javax.swing.ButtonGroup();
        buttonGroup2 = new javax.swing.ButtonGroup();
        jPanel1 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        jTextField1 = new javax.swing.JTextField();
        jLabel2 = new javax.swing.JLabel();
        jTextField2 = new javax.swing.JTextField();
        jLabel3 = new javax.swing.JLabel();
        jTextField3 = new javax.swing.JTextField();
        jLabel4 = new javax.swing.JLabel();
        jTextField4 = new javax.swing.JTextField();
        jLabel5 = new javax.swing.JLabel();
        jButton1 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();
        jRadioButton1 = new javax.swing.JRadioButton();
        jRadioButton2 = new javax.swing.JRadioButton();
        jRadioButton3 = new javax.swing.JRadioButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jPanel1.setBackground(new java.awt.Color(255, 255, 102));
        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Cadastrar Funcionário"));

        jLabel1.setText("Nome:");

        jLabel2.setText("CPF:");

        jLabel3.setText("Endereço:");

        jLabel4.setText("Telefone: ");

        jLabel5.setText("Tipo:");

        jButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagens/7.png"))); // NOI18N
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        jButton2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagens/48.png"))); // NOI18N
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });

        jRadioButton1.setText("Administrador");

        jRadioButton2.setText("Gerente");

        jRadioButton3.setText("Consultor");

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addComponent(jLabel1)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 290, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addComponent(jLabel2)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, 142, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(jPanel1Layout.createSequentialGroup()
                                .addGap(27, 27, 27)
                                .addComponent(jButton1))
                            .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                                .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel1Layout.createSequentialGroup()
                                    .addComponent(jLabel3)
                                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                    .addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, 165, javax.swing.GroupLayout.PREFERRED_SIZE))
                                .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel1Layout.createSequentialGroup()
                                    .addComponent(jLabel4)
                                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                    .addComponent(jTextField4))
                                .addGroup(javax.swing.GroupLayout.Alignment.LEADING, jPanel1Layout.createSequentialGroup()
                                    .addComponent(jLabel5)
                                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                    .addComponent(jRadioButton1)
                                    .addGap(18, 18, 18)
                                    .addComponent(jRadioButton2))))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jRadioButton3)
                            .addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 81, javax.swing.GroupLayout.PREFERRED_SIZE))))
                .addContainerGap(29, Short.MAX_VALUE))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGap(28, 28, 28)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel1)
                    .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel2)
                    .addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel3)
                    .addComponent(jTextField3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel4)
                    .addComponent(jTextField4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel5)
                    .addComponent(jRadioButton1)
                    .addComponent(jRadioButton2)
                    .addComponent(jRadioButton3))
                .addGap(28, 28, 28)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 57, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jButton1))
                .addContainerGap(48, Short.MAX_VALUE))
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(26, 26, 26)
                .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(24, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>                        

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
        Menu m=new Menu();
        m.setVisible(true);
        this.dispose();
    }                                        

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        try {
            // TODO add your handling code here:
           
            Funcionario f=new Funcionario();
            f.setNome(jTextField1.getText());
            f.setCpf(jTextField2.getText());
            f.setEndereco(jTextField3.getText());
            f.setTelefone(jTextField4.getText());
            if(jRadioButton1.isSelected())
            {
                tipo="Administrador";
            }
        
            
                if(jRadioButton2.isSelected())
                {
                    tipo="Gerente";
                }
     
                
                    if(jRadioButton3.isSelected())
                    {
                        tipo="Consultor";
                    }
     

        
            f.setTipo(tipo);

            FuncionarioDao fd=new FuncionarioDao();
            fd.adiciona(f);
    JOptionPane.showMessageDialog(null, "Funcionario Salvo com sucesso");
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Funcionario não Salvo");
        }
    }                                        

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new FormFuncionario().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify                     
    private javax.swing.ButtonGroup buttonGroup1;
    private javax.swing.ButtonGroup buttonGroup2;
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JRadioButton jRadioButton1;
    private javax.swing.JRadioButton jRadioButton2;
    private javax.swing.JRadioButton jRadioButton3;
    private javax.swing.JTextField jTextField1;
    private javax.swing.JTextField jTextField2;
    private javax.swing.JTextField jTextField3;
    private javax.swing.JTextField jTextField4;
    // End of variables declaration                   

}
[/code]<br>
Funcionario<br>[code]
package locadora.classes;

public class Funcionario {
     private String nome;
    private String cpf;
    private String endereco;
    private String telefone;
    private String tipo;

    public Funcionario() {
    }

    public Funcionario(String nome, String cpf, String endereco, String telefone, String tipo) {
        this.nome = nome;
        this.cpf = cpf;
        this.endereco = endereco;
        this.telefone = telefone;
        this.tipo = tipo;
    }

    

    public String getCpf() {
        return cpf;    }
    public void setCpf(String cpf) {
        this.cpf = cpf;    }
    public String getEndereco() {
        return endereco;    }
    public void setEndereco(String endereco) {
        this.endereco = endereco;
    }
    public String getNome() {
        return nome;    }
    public void setNome(String nome) {
        this.nome = nome;    }
    public String getTelefone() {
        return telefone;    }
    public void setTelefone(String telefone) {
        this.telefone = telefone;    }
    public String getTipo() {
        return tipo;
    }
    public void setTipo(String tipo) {
        this.tipo = tipo;
    }
}

[/code]<br>FuncionarioDao<br>
[code]package locadora.classes;
import java.sql.Statement;
import java.sql.Connection;
import java.sql.SQLException;
import javax.swing.JOptionPane;

public class FuncionarioDao {
    
    private Connection connection;

public FuncionarioDao() {
this.connection = new ConnectionFactory().getConnection();
}

public void adiciona(Funcionario funcionario) throws SQLException
    {
   

ConnectionFactory a = new ConnectionFactory();
Statement stmt = a.getConnection().createStatement();
stmt.executeUpdate("insert into funcionarios values( '"+funcionario.getCpf() +"' , '"+funcionario.getNome()+"', '"+funcionario.getEndereco()+"', '"+funcionario.getTelefone()+"', '"+funcionario.getTipo()+"')");
JOptionPane.showMessageDialog(null,"Dados Inseridos com Sucesso!!!");
stmt.close();
a.getConnection().close();

        

}

}

Agradeço muito a todos que tentarem ajudar!

Olá,
Não entendo muito de sql, mas acho que nesse trecho do seu código:

stmt.executeUpdate("insert into funcionarios values( '"+funcionario.getCpf() +"' , '"+funcionario.getNome()+"', '"+funcionario.getEndereco()+"', '"+funcionario.getTelefone()+"', '"+funcionario.getTipo()+"')");

não teria que incluir os campos? Tipo assim:

stmt.executeUpdate("insert into funcionarios (cpf,nome,endereco,telefone,tipo)values( '"+funcionario.getCpf() +"' , '"+funcionario.getNome()+"', '"+funcionario.getEndereco()+"', '"+funcionario.getTelefone()+"', '"+funcionario.getTipo()+"')");

Não sei se está assim no teu código, mas acho que está faltando tbm o id. Se tiver, não sei que banco está usando mas, teria que usar um auto-increment ou se for oracle, usar uma sequence.
Espero ter ajudado;
Daniel

Olá, Valcides.

Você mencionou que seu problema é não estar conseguindo conectar. Poste o código da sua classe ConnectionFactory.

E pro Daniel:

se a tabela funcionarios só tiver os campos cpf, nome, endereço, telefone e tipo esse código não estaria errado:

   1. stmt.executeUpdate("insert into funcionarios values( '"+funcionario.getCpf() +"' , '"+funcionario.getNome()+"', '"+funcionario.getEndereco()+"', '"+funcionario.getTelefone()+"', '"+funcionario.getTipo()+"')");  

Incluir os campos é necessário quando você tem na tabela por exemplo 5 campos mas vai passar só 4 valores na hora de inserir.

E sempre dê preferência a usar PreparedStatement ao invés de concatenar strings. Isso evita problemas com nomes como Joana D’arc, por exemplo e fecha as portas para SQLInjection.

Ademilton,
valeu pela dica, dessa eu não sabia, aqui usamos o hibernate e às vezes fazemos algumas sql’s na mão.
Obrigado mesmo, mais uma que aprendi.
Atenciosamente;
Daniel :smiley:

E a exception? Erro? O que acontece? Se acontece?

Desculpem-me, não postei a ConnectionFactory por ter certeza de estar funcionando perfeitamente. Mas se eu estiver errado aí vai:

[code]package locadora.classes;

import javax.swing.JOptionPane;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class ConnectionFactory {

public Connection getConnection() {

try {
return DriverManager.getConnection(“jdbc:mysql://localhost/locadora”,“root”,"");
} catch(SQLException e) {
JOptionPane.showMessageDialog(null,“Falha ao conectar ao banco de dados!!”);
throw new RuntimeException(e);
}
}

}[/code]

Para drsmachado:

Pus uma exceção com um JOptionPane para retornar alguma coia dependendo do erro, e o que sempre aparece é o que este bloco de código catch executa(Presente em FormFuncionario):

catch (SQLException ex) { JOptionPane.showMessageDialog(null, "Funcionario não Salvo");

Agradeço pela atenção que estão dando ao meu problema!

Troque isto:

JOptionPane.showMessageDialog(null, "Funcionario não Salvo");

por isto:

ex.printStackTrace();

e poste o resultado da execução. Daí teremos mais clareza do seu problema.

Resultado de saída com a última alteração feita:

run:
java.sql.SQLException: Incorrect integer value: ‘Administrador’ for column ‘tipo’ at row 1
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1075)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3566)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3498)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1959)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2113)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2562)
at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1664)
at com.mysql.jdbc.StatementImpl.executeUpdate(StatementImpl.java:1583)
at locadora.classes.FuncionarioDao.adiciona(FuncionarioDao.java:21)
at locadora.classes.FormFuncionario.jButton1ActionPerformed(FormFuncionario.java:226)
at locadora.classes.FormFuncionario.access$000(FormFuncionario.java:21)
at locadora.classes.FormFuncionario$1.actionPerformed(FormFuncionario.java:78)
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:6288)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
at java.awt.Component.processEvent(Component.java:6053)
at java.awt.Container.processEvent(Container.java:2041)
at java.awt.Component.dispatchEventImpl(Component.java:4651)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4481)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
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:2478)
at java.awt.Component.dispatchEvent(Component.java:4481)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:643)
at java.awt.EventQueue.access$000(EventQueue.java:84)
at java.awt.EventQueue$1.run(EventQueue.java:602)
at java.awt.EventQueue$1.run(EventQueue.java:600)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
at java.awt.EventQueue$2.run(EventQueue.java:616)
at java.awt.EventQueue$2.run(EventQueue.java:614)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:613)
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)

o banco está reclamando que você ta tentando inserir um valor errado na coluna tipo.

tem certesa que a coluna tipo esta como varchar?

[color=green]Muito obrigado a todos os colaboradores com a tentativa de resolução do meu problema, principalmente ao usuário “klebson lou”. O problemas estavam realmente nos campos que não estavam como VARCHAR. Grande vacilo meu, mas todo mundo vacila né? O erro faz parte da busca de melhoria contínua. Muito obrigado![/color]