Bom em casa eu não cheguei a testar pois ele acusa um erro na conexão, mas, na faculdade onde estudo deu erro não na conexão mas nas ações dos botões, só não me recordo qual erro especificamente =/ . Bom vou fazer então um ActionPerformed para cada botão. Outra solução que eu tive foi essa, testei em casa e mais uma vez deu erro de conexão com o SQL depois que cliquei no botão INSERIR:
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class CadastroFuncionario extends JFrame implements ActionListener{
JPanel painel ;
JPanel painelBotoes;
JButton btnInserir;
JButton btnAtualizar;
JButton btnApagar;
JButton btnListar;
JTextField txtNome;
JTextField txtProfissao;
JTextField txtData;
JTextField txtSexo;
JTextArea exibir;
JLabel lblNome;
JLabel lblProfissao;
JLabel lblData;
JLabel lblSexo;
public CadastroFuncionario(){
super("Cadastro de Funcionários");
painel = new JPanel();
painel.setLayout(new GridLayout(11,1,0,5));
//exibir = new JTextArea(60,60);
//painel.add(exibir);
painel.add(lblNome = new JLabel("Nome: "));
txtNome = new JTextField(100);
painel.add(txtNome);
painel.add(lblProfissao= new JLabel("Profissao: "));
painel.add(txtProfissao = new JTextField(50));
lblData = new JLabel("Data de nascimento: ");
painel.add(lblData);
txtData = new JTextField(10);
painel.add(txtData);
lblSexo = new JLabel("Sexo: ");
painel.add(lblSexo);
txtSexo = new JTextField(2);
painel.add(txtSexo);
painelBotoes = new JPanel();
painelBotoes.setLayout(new FlowLayout());
btnInserir = new JButton("INSERIR");
painelBotoes.add(btnInserir);
btnInserir.addActionListener(this);
btnAtualizar = new JButton("ATUALIZAR");
painelBotoes.add(btnAtualizar);
btnAtualizar.addActionListener(this);
btnApagar = new JButton("APAGAR");
painelBotoes.add(btnApagar);
btnApagar.addActionListener(this);
btnListar = new JButton("LISTAR");
painelBotoes.add(btnListar);
btnListar.addActionListener(this);
getContentPane();
setLayout(new BorderLayout());
add(painel, BorderLayout.NORTH);
add(painelBotoes, BorderLayout.CENTER);
setSize(400,430);
setLocation(180,180);
setVisible(true);
}
public static void main(String[] args)throws ClassNotFoundException, SQLException {
CadastroFuncionario cf = new CadastroFuncionario();
}
@Override
public void actionPerformed(ActionEvent arg) {
String nome = txtNome.getText();
String profissao = txtProfissao.getText();
String nascimento = txtData.getText();
String sexo = txtSexo.getText();
if(arg.getSource() == btnInserir){
inserir();
}
if(arg.getSource() == btnAtualizar){
atualizar();
}
if(arg.getSource() == btnApagar){
apagar();
}
if(arg.getSource() == btnListar){
listar();
}
}
private void inserir(){
Connection con;
String nome = txtNome.getText();
String profissao = txtProfissao.getText();
String nascimento = txtData.getText();
String sexo = txtSexo.getText();
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection("jdbc:odbc:bd");
}catch(Exception e){
e.printStackTrace();
throw new RuntimeException("ERRO AO SE CONECTAR !");
}
try{
PreparedStatement includepstmt = con.prepareStatement("INSERT INTO FUNCIONARIO VALUES(?,?,?,?)");
includepstmt.setString(1, nome);
includepstmt.setString(2, profissao);
includepstmt.setString(3, nascimento);
includepstmt.setString(4, sexo);
includepstmt.executeUpdate();
}catch(SQLException e){
throw new RuntimeException("ERRO NA INSERÇÃO DE VALORES");
}
}
private void atualizar(){
Connection con;
String nome = txtNome.getText();
String profissao = txtProfissao.getText();
String nascimento = txtData.getText();
String sexo = txtSexo.getText();
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection("jdbc:odbc:bd");
}catch(Exception e){
e.printStackTrace();
throw new RuntimeException("ERRO AO SE CONECTAR !");
}
try{
PreparedStatement selecionapstmt = con.prepareStatement("SELECT * FROM FUNCIONARIO WHERE NOME = ?");
ResultSet rs = selecionapstmt .executeQuery();
selecionapstmt.setString(1, nome);
PreparedStatement includepstmt = con.prepareStatement("UPDATE FUNCIONARIO SET(?,?,?,?) WHERE NOME =(?)");
includepstmt.setString(1, nome);
includepstmt.setString(2, profissao);
includepstmt.setString(3, nascimento);
includepstmt.setString(4, sexo);
includepstmt.setString(5, nome);
includepstmt.executeUpdate();
PreparedStatement seleciona2pstmt = con.prepareStatement("SELECT * FROM FUNCIONARIO WHERE NOME = ?");
ResultSet rs2 = seleciona2pstmt .executeQuery();
seleciona2pstmt.setString(1, nome);
}catch(SQLException e){
throw new RuntimeException("ERRO NA ATUALIZAÇÃO DE VALORES");
}
}
private void apagar(){
Connection con;
String nome = txtNome.getText();
String profissao = txtProfissao.getText();
String nascimento = txtData.getText();
String sexo = txtSexo.getText();
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection("jdbc:odbc:bd");
}catch(Exception e){
e.printStackTrace();
throw new RuntimeException("ERRO AO SE CONECTAR !");
}
try{
PreparedStatement selecionapstmt = con.prepareStatement("SELECT * FROM FUNCIONARIO");
ResultSet rs = selecionapstmt .executeQuery();
PreparedStatement deletapstmt = con.prepareStatement("DELETE FROM FUNCIONARIO WHERE NOME =(?)");
deletapstmt.setString(1, nome);
deletapstmt.executeUpdate();
PreparedStatement seleciona2pstmt = con.prepareStatement("SELECT * FROM FUNCIONARIO");
ResultSet rs2 = seleciona2pstmt .executeQuery();
System.out.println("Nome \t Profissao \t Nascimento \t Sexo");
while (rs.next()) {
System.out.println(rs.getString("NOME").trim() + "\t" +rs.getString("PROFISSAO").trim() + "\t" + rs.getDate("NASCIMENTO") +
"\t" + rs.getString("SEXO").trim());
}
}catch(SQLException e){
throw new RuntimeException("ERRO NA ATUALIZAÇÃO DE VALORES");
}
}
private void listar() {
Connection con;
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection("jdbc:odbc:bd");
}catch(Exception e){
e.printStackTrace();
throw new RuntimeException("ERRO AO SE CONECTAR !");
}
String query = "SELECT * FROM FUNCIONARIO";
try{
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(query);
while(rs.next()){
System.out.println(rs.getString("NOME").trim() + "\t" +rs.getString("PROFISSAO").trim() + "\t" + rs.getDate("NASCIMENTO") +
"\t" + rs.getString("SEXO").trim());
}
}catch(SQLException e){
throw new RuntimeException("ERRO NA SELEÇÃO");
}
try{
con.close();
}catch (Exception e){
e.printStackTrace();
}
}
}
Este é o erro que aparece:
java.sql.SQLException: [Microsoft][ODBC Driver Manager] Comprimento inválido de cadeia de caracteres ou de buffer
at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.SQLGetDataString(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcResultSet.getDataString(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcResultSet.getString(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcConnection.buildTypeInfo(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcConnection.initialize(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at CadastroFuncionario.inserir(CadastroFuncionario.java:174)
at CadastroFuncionario.actionPerformed(CadastroFuncionario.java:144)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Exception in thread “AWT-EventQueue-0” java.lang.RuntimeException: ERRO AO SE CONECTAR !
at CadastroFuncionario.inserir(CadastroFuncionario.java:177)
at CadastroFuncionario.actionPerformed(CadastroFuncionario.java:144)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Se você ou alguém puder me explicar o por quê deste erro eu agradeço. Não sei se tem haver mas eu uso o SEVEN e o SQL 2008, já lá na faculdade é XP e SQL 2005.
Obrigada mais uma vez !