Eu não consigo conectar com o banco de dados. Me desculpem pelo tamanho do código, mas prefiro passar ele completo. Obrigada desde já!
SEGUE O ERRO:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at com.fatec.bd.desconecta(bd.java:78)
at com.fatec.frmCliente$2.focusLost(frmCliente.java:95)
at java.awt.AWTEventMulticaster.focusLost(Unknown Source)
at java.awt.Component.processFocusEvent(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.KeyboardFocusManager.redispatchEvent(Unknown Source)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(Unknown Source)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(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.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.awt.EventQueue$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(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)
CLASSE BANCO DE DADOS
import java.sql.*;
public class bd{
private Connection con;
private Statement stmt;
private boolean erro;
private String msg;
private String banco, usuario, senha;
/* Método Construtor: inicializa alguns atributos do objeto
Parâmetros: b-nome do banco de dados / u-nome o usuario / s-senha
*/
public bd(String b, String u, String s){
this.banco="jdbc:mysql://localhost/?autoReconnect=true&useSSL=false"+b;
this.usuario=u;
this.senha=s;
erro=false;
msg="";
}
/* Método conectaBD: realiza a conexão com o banco de dados
Retorno: TRUE-conexão realizada / FALSE-falha na conexão
*/
public boolean conectaBD(){
this.erro=false;
try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection(this.banco, this.usuario,
this.senha);
stmt=con.createStatement();
}catch (SQLException e){this.erro=true;
this.msg="Falha na conexao com o banco de dados!";
}
catch (java.lang.Exception e){this.erro=true;
this.msg="Erro no driver de conexao!";
}
return !erro;
}
/* Método: consulta
Parâmetro: c-comando SQL de consulta (SELECT)
Retorno: objeto ResultSet com o resultado da consulta
*/
public ResultSet consulta (String c){
ResultSet res=null;
this.erro=false;
this.msg="Sucesso na execução da consulta!";
try{
res=stmt.executeQuery(c);
}catch (SQLException e){this.erro=true;
this.msg="Falha na execução da consulta!";
}
return res;
}
/* Método: atualiza
Parâmetro: c-comando SQL de atualização (INSERT, UPDATE, DELETE)
Retorno: TRUE-comando executado com sucesso / FALSE-falha na execução
*/
public boolean atualiza(String c){
int i=-1;
this.erro=false;
this.msg="Operação realizada com sucesso!";
try{
i=stmt.executeUpdate(c);
}catch (SQLException e){
this.erro=true;
this.msg="Falha na operação!";
}
return !erro;
}
/* Método desconecta: fecha a conexão com o banco de dados
Retorno: TRUE-desconexão realizada / FALSE-falha na desconexão
*/
public boolean desconecta(){
boolean sucesso=true;
try{
stmt.close();
con.close();
}catch(SQLException e){sucesso=false;}
return sucesso;
}
/* Método ocorreuErro: retorna o valor do atributo erro
Retorno: TRUE-ocorreu um erro durante uma operação
FALSE-não ocorreu nenhum erro
*/
public boolean ocorreuErro(){
return this.erro;
}
/* Método mensagem: retorna o valor do atributo mensagem
Retorno: Mensagem sobre um possível erro que possa ter ocorrido
durante a realização de uma operação
*/
public String mensagem(){
return this.msg;
}
}
CLASSE CLIENTE
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import javax.swing.JOptionPane;
import javax.swing.JLabel;
import javax.swing.JButton;
public class frmCliente extends JFrame {
private JPanel contentPane;
private JTextField txtCod_Cliente;
private JTextField txtCPF_Cliente;
private JTextField txtNome_Cliente;
private JTextField txtTelefone_Cliente;private bd objBD;
private JButton btnSair;
/**
- Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
frmCliente frame = new frmCliente();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
Create the frame.
*/
public frmCliente() {
setTitle(“Cadastro de Cliente”);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 468, 251);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);//conexao com bd
objBD = new bd(“acmecar”, “root”, “”);
JLabel lblCod_Cliente = new JLabel(“C\u00F3digo”);
lblCod_Cliente.setHorizontalAlignment(SwingConstants.CENTER);
lblCod_Cliente.setBounds(0, 0, 66, 16);
contentPane.add(lblCod_Cliente);txtCod_Cliente = new JTextField();
txtCod_Cliente.setColumns(10);
txtCod_Cliente.setBounds(12, 24, 164, 20);
contentPane.add(txtCod_Cliente);txtCod_Cliente.addFocusListener(new FocusAdapter() {
@Override
public void focusLost(FocusEvent arg0) {
if (!objBD.conectaBD()){
ExibeMensagem();
} else {
String sql = “select * from clientes where Cod_Cliente = " +
txtCod_Cliente.getText().toString();
ResultSet objRes = objBD.consulta(sql);
try{
if (objRes.next()){
txtNome_Cliente.setText(objRes.getString(2));
txtTelefone_Cliente.setText(objRes.getString(3));
} else {
txtNome_Cliente.setText(”");
txtTelefone_Cliente.setText("");
}
} catch(SQLException e) {
ExibeMensagem();
}} objBD.desconecta(); }
private void ExibeMensagem() { // TODO Auto-generated method stub } }); //fimbd JLabel lblCPF_Cliente = new JLabel("CPF"); lblCPF_Cliente.setVerticalAlignment(SwingConstants.BOTTOM); lblCPF_Cliente.setHorizontalAlignment(SwingConstants.LEFT); lblCPF_Cliente.setBounds(232, 0, 46, 16); contentPane.add(lblCPF_Cliente); txtCPF_Cliente = new JTextField(); txtCPF_Cliente.setBounds(232, 24, 164, 20); contentPane.add(txtCPF_Cliente); txtCPF_Cliente.setColumns(10); JLabel lblNome_Cliente = new JLabel("Nome"); lblNome_Cliente.setBounds(10, 76, 55, 16); contentPane.add(lblNome_Cliente); txtNome_Cliente = new JTextField(); txtNome_Cliente.setBounds(12, 104, 164, 20); contentPane.add(txtNome_Cliente); txtNome_Cliente.setColumns(10); JLabel lblTelefone_Cliente = new JLabel("Telefone"); lblTelefone_Cliente.setBounds(232, 76, 55, 16); contentPane.add(lblTelefone_Cliente); txtTelefone_Cliente = new JTextField(); txtTelefone_Cliente.setBounds(232, 104, 164, 20); contentPane.add(txtTelefone_Cliente); txtTelefone_Cliente.setColumns(10); //inicio btnSalvar JButton btnSalvar = new JButton("Salvar"); btnSalvar.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (!objBD.conectaBD()){ ExibeMensagem(); } else { String sql = "select * from clientes where Cod_Cliente = " + txtCod_Cliente.getText().toString(); ResultSet objRes = objBD.consulta(sql); try{ if (objRes.next()){ // Alteracao sql = "UPDATE clientes SET Cod_Cliente = '" + txtCod_Cliente.getText().toString() + "' Nome_Cliente = '" + txtNome_Cliente.getText().toString() + "' Telefone_Cliente = '" + txtTelefone_Cliente.getText().toString() + "'" + "' CPF_Cliente = '" +txtCPF_Cliente.getText() .toString() + " WHERE Cod_Cliente = '" + txtCod_Cliente.getText().toString() + "'"; } else { //Inclusao sql = "INSERT INTO clientes(Cod_Cliente, CPF_Cliente, Nome_Cliente, Telefone_Cliente) VALUES ('" + txtCod_Cliente.getText().toString() + "', '" + txtCPF_Cliente.getText().toString() + "', '" + txtNome_Cliente.getText().toString() + "', '" + txtTelefone_Cliente.getText().toString() + "')"; } if (objBD.atualiza(sql)) { LimparCampos(); } else { ExibeMensagem(); } } catch(SQLException f){ ExibeMensagem(); } objBD.desconecta(); } } }); //fim botao salvar btnSalvar.setMnemonic('S'); btnSalvar.setBounds(10, 179, 98, 26); contentPane.add(btnSalvar); //inicio botao excluir JButton btnExcluir = new JButton("Excluir"); btnExcluir.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (!objBD.conectaBD()){ ExibeMensagem(); } else { String sql = "delete from clientes where codtip = " + txtCod_Cliente.getText().toString(); if (objBD.atualiza(sql)){ LimparCampos(); } else { ExibeMensagem(); } objBD.desconecta(); } } }); btnExcluir.setMnemonic('E'); btnExcluir.setBounds(120, 179, 98, 26); contentPane.add(btnExcluir); //FIM BOTAO EXCLUIR JButton btnLimpar = new JButton("Limpar"); btnLimpar.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { LimparCampos(); } }); btnLimpar.setMnemonic('L'); btnLimpar.setBounds(232, 179, 98, 26); contentPane.add(btnLimpar); JButton btnSair = new JButton("Sair"); btnSair.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { setVisible(false); } }); btnSair.setBounds(342, 179, 98, 26); contentPane.add(btnSair);
}
private void LimparCampos() {
txtCod_Cliente.setText("");
txtCPF_Cliente.setText("");
txtNome_Cliente.setText("");
txtTelefone_Cliente.setText("");
}private void ExibeMensagem() {
JOptionPane.showMessageDialog(null, objBD.mensagem(),
“Erro”, JOptionPane.ERROR_MESSAGE);
}public JButton getBtnSair() {
return btnSair;
}public void setBtnSair(JButton btnSair) {
this.btnSair = btnSair;
}
}