Veja a linha que dá erro:
clientes.cliente.setId_cgc_cpf(tfId_cliente.getText());
clientes é um objeto DAO criado no começo do programa e cliente é o registro que contém os campos, na verdade cliente são os campos que seram enviados pelo statement.setString ao comando do sql para fazer a busca (verificação se o cliente existe) da linha abaixo:
if(!clientes.localizar()) {
localizar é um método que executa um select dentro do arquivo de clientes, por isto a referência ao objeto DAO clientes. Mas está linha nunca é executada, o erro está na linha anterior, em que executo um set para o campo de busca guardar o valor do cgc ou cpf do cliente.
Mas o programa que esta dando problema não é a manipulação do cadastro de clientes e sim o cadastro de endereço de entrega. Dentro do cadastro de clientes não tem erro.
Veja o relatório de erros que o Netbeans passa:
Vou anexar os programas relacionados, para caso você queira dar uma olhada:
Programa do erro: GuiCadastroEndEntCli.java
package br.com.gui;
import bdclientes.CliDAO;
import bdclientes.enderecoEntregaCliente.EndEntCliDAO;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/**
*
* @author Ronaldo Rodrigues Godoi
*/
public class GuiCadastroEndEntCli extends JPanel {
JLabel lbCad_end_ent_cli, lbLargura, lbAltura;
JLabel lbId, lbId_cliente, lbTelefone, lbCep, lbEndereco, lbNumero,
lbComplemento, lbBairro, lbCidade, lbEstado;
JButton btGravar, btAlterar, btExcluir, btNovo, btLocalizar, btCancelar, btSair;
JTextField tfId, tfId_cliente, tfTelefone, tfCep, tfEndereco, tfNumero,
tfComplemento, tfBairro, tfCidade, tfEstado;
private EndEntCliDAO endEntClientes;
private CliDAO clientes;
public GuiCadastroEndEntCli() {
inicializarComponentes();
definirEventos();
}
public void inicializarComponentes() {
setLayout(null);
Dimension tela = Toolkit.getDefaultToolkit().getScreenSize();
lbLargura = new JLabel(""+tela.width);
lbAltura = new JLabel(""+tela.height);
int altura = 1000;
int largura = 1800;
setBounds(0, 0, largura, altura);
lbCad_end_ent_cli = new JLabel("Cadastro de Endereço de Entrega de Clientes");
lbId = new JLabel("Id do endereço de Entrega");
lbId_cliente = new JLabel("CPF ou CGC: ");
lbTelefone = new JLabel("Telefone: ");
lbCep = new JLabel("CEP: ");
lbEndereco = new JLabel("Endereço: ");
lbNumero = new JLabel("Número:");
lbComplemento = new JLabel("Complemento: ");
lbBairro = new JLabel("Bairro: ");
lbCidade = new JLabel("Cidade: ");
lbEstado = new JLabel("Estado: ");
tfId = new JTextField(10);
tfId_cliente = new JTextField(20);
tfTelefone = new JTextField(17);
tfCep = new JTextField(9);
tfEndereco = new JTextField(60);
tfNumero = new JTextField(10);
tfComplemento = new JTextField(40);
tfBairro = new JTextField(60);
tfCidade = new JTextField(40);
tfEstado = new JTextField(2);
btGravar = new JButton(null, new ImageIcon("c:/icones/icon12/gravar.gif"));
btGravar.setToolTipText("Gravar");
btAlterar = new JButton(null, new ImageIcon("c:/icones/icon12/alterar.gif"));
btAlterar.setToolTipText("Alterar");
btExcluir = new JButton(null, new ImageIcon("c:/icones/icon12/excluir.gif"));
btExcluir.setToolTipText("Excluir");
btLocalizar = new JButton(null, new ImageIcon("c:/icones/icon12/localizar.png"));
btLocalizar.setToolTipText("Localizar");
btNovo = new JButton(null, new ImageIcon("c:/icones/icon12/novo.gif"));
btNovo.setToolTipText("Novo");
btCancelar = new JButton(null, new ImageIcon("c:/icones/icon12/cancelar.gif"));
btCancelar.setToolTipText("Cancelar");
btSair = new JButton(null, new ImageIcon("c:/icones/icon12/sair.png"));
btSair.setToolTipText("Sair");
lbCad_end_ent_cli.setBounds(35, 75, 250, 25);
lbId.setBounds(35, 175, 200, 25);
tfId.setBounds(250, 175, 75, 25);
lbId_cliente.setBounds(35, 250, 100, 25);
tfId_cliente.setBounds(115, 250, 150, 25);
lbTelefone.setBounds(450, 250, 100, 25);
tfTelefone.setBounds(520, 250, 100, 25);
lbCep.setBounds(35, 325, 100, 25);
tfCep.setBounds(75, 325, 100, 25);
lbEndereco.setBounds(200, 325, 100, 25);
tfEndereco.setBounds(270, 325, 300, 25);
lbNumero.setBounds(665, 325, 100, 25);
tfNumero.setBounds(735, 325, 100, 25);
lbComplemento.setBounds(35, 400, 150, 25);
tfComplemento.setBounds(130, 400, 225, 25);
lbBairro.setBounds(400, 400, 50, 25);
tfBairro.setBounds(495, 400, 250, 25);
lbCidade.setBounds(35, 475, 200, 25);
tfCidade.setBounds(90, 475, 280, 25);
lbEstado.setBounds(450, 475, 100, 25);
tfEstado.setBounds(500, 475, 30, 25);
btNovo.setBounds (45, 550, 75, 75);
btLocalizar.setBounds(145, 550, 75, 75);
btGravar.setBounds (245, 550, 75, 75);
btAlterar.setBounds (345, 550, 75, 75);
btExcluir.setBounds (445, 550, 75, 75);
btCancelar.setBounds (545, 550, 75, 75);
btSair.setBounds (645, 550, 75, 75);
lbLargura.setBounds (745, 550, 75, 75);
lbAltura.setBounds (845, 550, 75, 75);
add(lbCad_end_ent_cli);
add(lbLargura);
add(lbAltura);
add(lbId);
add(tfId);
add(lbId_cliente);
add(tfId_cliente);
add(lbTelefone);
add(tfTelefone);
add(lbCep);
add(tfCep);
add(lbEndereco);
add(tfEndereco);
add(lbNumero);
add(tfNumero);
add(lbComplemento);
add(tfComplemento);
add(lbBairro);
add(tfBairro);
add(lbCidade);
add(tfCidade);
add(lbEstado);
add(tfEstado);
add(btNovo);
add(btLocalizar);
add(btGravar);
add(btAlterar);
add(btExcluir);
add(btCancelar);
add(btSair);
//setResizable(false);
setBotoes(true, true, false, false, false, false);
endEntClientes = new EndEntCliDAO();
if(!endEntClientes.bd.getConnection()) {
JOptionPane.showMessageDialog(null, "Falha na conexão, o sistema será fechado!");
System.exit(0);
}
}
public void definirEventos() {
tfId_cliente.addFocusListener(new FocusAdapter() {
public void focusLost(FocusEvent e) {
System.out.println("Cliente procurado: " + tfId_cliente.getText());
// aqui deve ter uma pausa... a linha de baixo está com erro.
clientes.cliente.setId_cgc_cpf(tfId_cliente.getText());
if(!clientes.localizar()) {
JOptionPane.showMessageDialog(null, "Cliente não cadastrado!");
tfId.requestFocus();
} else {
tfTelefone.requestFocus();
}
return;
}
});
btSair.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
endEntClientes.bd.close();
setVisible(false);
}
});
btNovo.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
limparCampos();
setBotoes(false, false, true, false, false, true);
}
});
btCancelar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
limparCampos();
}
});
btGravar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(tfId.getText().equals("")) {
JOptionPane.showMessageDialog(null, "O código do endereço de entrega não pode estar vazio!");
tfId.requestFocus();
return;
}
if(tfId_cliente.getText().equals("")) {
JOptionPane.showMessageDialog(null, "O CPF ou CGC não podem ser vazios!");
tfId_cliente.requestFocus();
return;
}
if(tfCep.getText().equals("")) {
JOptionPane.showMessageDialog(null, "O CEP não pode ser vazio!");
tfCep.requestFocus();
return;
}
if(tfEndereco.getText().equals("")) {
JOptionPane.showMessageDialog(null, "O Endereço não pode ser vazio!");
tfEndereco.requestFocus();
return;
}
if(tfNumero.getText().equals("")) {
JOptionPane.showMessageDialog(null, "O número não pode ser vazio!");
tfNumero.requestFocus();
return;
} else {
try {
int numero = Integer.parseInt(tfNumero.getText());
} catch (Exception erro) {
JOptionPane.showMessageDialog(null, "O número não pode contém caracteres invalidos!");
tfNumero.requestFocus();
return;
}
}
if(tfCidade.getText().equals("")) {
JOptionPane.showMessageDialog(null, "A cidade não pode ser vazia!");
tfCidade.requestFocus();
return;
}
if(tfBairro.getText().equals("")) {
JOptionPane.showMessageDialog(null, "O bairro não pode ser vazio");
tfBairro.requestFocus();
return;
}
if(tfEstado.getText().equals("")) {
JOptionPane.showMessageDialog(null, "O estado não pode estar vazio!");
tfEstado.requestFocus();
return;
}
endEntClientes.cli_entrega.setId(tfId.getText());
endEntClientes.cli_entrega.setId_cliente(tfId_cliente.getText());
endEntClientes.cli_entrega.setTelefone(tfTelefone.getText());
endEntClientes.cli_entrega.setCep(tfCep.getText());
endEntClientes.cli_entrega.setEndereco(tfEndereco.getText());
endEntClientes.cli_entrega.setNumero(tfNumero.getText());
endEntClientes.cli_entrega.setComplemento(tfComplemento.getText());
endEntClientes.cli_entrega.setBairro(tfBairro.getText());
endEntClientes.cli_entrega.setCidade(tfCidade.getText());
endEntClientes.cli_entrega.setEstado(tfEstado.getText());
JOptionPane.showMessageDialog(null, endEntClientes.atualizar(EndEntCliDAO.INCLUSAO));
limparCampos();
}
});
btAlterar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
endEntClientes.cli_entrega.setId(tfId.getText());
endEntClientes.cli_entrega.setTelefone(tfTelefone.getText());
endEntClientes.cli_entrega.setCep(tfCep.getText());
endEntClientes.cli_entrega.setEndereco(tfEndereco.getText());
endEntClientes.cli_entrega.setNumero(tfNumero.getText());
endEntClientes.cli_entrega.setComplemento(tfComplemento.getText());
endEntClientes.cli_entrega.setBairro(tfBairro.getText());
endEntClientes.cli_entrega.setCidade(tfCidade.getText());
endEntClientes.cli_entrega.setEstado(tfEstado.getText());
JOptionPane.showMessageDialog(null, endEntClientes.atualizar(EndEntCliDAO.ALTERACAO));
limparCampos();
}
});
btExcluir.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
endEntClientes.cli_entrega.setId(tfId.getText());
endEntClientes.localizar();
int n = JOptionPane.showConfirmDialog(null, endEntClientes.cli_entrega.getId_cliente(),
"Excluir o endereço de entrega de cliente? ", JOptionPane.YES_NO_OPTION);
if(n == JOptionPane.YES_OPTION) {
JOptionPane.showMessageDialog(null, endEntClientes.atualizar(EndEntCliDAO.EXCLUSAO));
limparCampos();
}
}
});
btLocalizar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
atualizarCampos();
}
});
}
public void limparCampos() {
tfId.setText("");
tfId_cliente.setText("");
tfTelefone.setText("");
tfCep.setText("");
tfEndereco.setText("");
tfNumero.setText("");
tfComplemento.setText("");
tfBairro.setText("");
tfCidade.setText("");
tfEstado.setText("");
setBotoes(true, true, false, false, false, false);
}
public void atualizarCampos() {
endEntClientes.cli_entrega.setId(tfId.getText());
if(endEntClientes.localizar()) {
tfId_cliente.setText(endEntClientes.cli_entrega.getId_cliente());
tfTelefone.setText(endEntClientes.cli_entrega.getTelefone());
tfCep.setText(endEntClientes.cli_entrega.getCep());
tfEndereco.setText(endEntClientes.cli_entrega.getEndereco());
tfNumero.setText(endEntClientes.cli_entrega.getNumero());
tfComplemento.setText(endEntClientes.cli_entrega.getComplemento());
tfBairro.setText(endEntClientes.cli_entrega.getBairro());
tfCidade.setText(endEntClientes.cli_entrega.getCidade());
tfEstado.setText(endEntClientes.cli_entrega.getEstado());
setBotoes(true, true, false, true, true, true);
} else {
JOptionPane.showMessageDialog(null, "Endereço de Cliente não encontrado! " + endEntClientes.cli_entrega.getId());
limparCampos();
}
}
public void setBotoes(boolean bNovo, boolean bLocalizar, boolean bGravar,
boolean bAlterar, boolean bExcluir, boolean bCancelar) {
btNovo.setEnabled(bNovo);
btLocalizar.setEnabled(bLocalizar);
btGravar.setEnabled(bGravar);
btAlterar.setEnabled(bAlterar);
btExcluir.setEnabled(bExcluir);
btCancelar.setEnabled(bCancelar);
}
}
/*
Table: cli_entrega
Columns:
id varchar(10) PK
id_cliente varchar(10)
telefone varchar(20)
cep varchar(9)
endereco varchar(60)
numero int
complemento varchar(40)
bairro varchar(60)
cidade varchar(40)
estado varchar(2)
*/
Programa DAO do cadastro de clientes que é usado pelo programa acima: CliDAO.java
package bdclientes;
/**
*
* @author Ronaldo Rodrigues Godoi
*/
import empresaiv.BD;
import java.sql.*;
/**
*
* @author Ronaldo R. Godoi
*/
public class CliDAO {
public Clientes cliente;
public BD bd;
private PreparedStatement statement;
private ResultSet resultSet;
private String men, sql;
public static final byte INCLUSAO = 1;
public static final byte ALTERACAO = 2;
public static final byte EXCLUSAO = 3;
public CliDAO() {
bd = new BD();
cliente = new Clientes();
}
public boolean localizar() {
sql = "select * from clientes where id_cgc_cpf = ?";
try {
statement = bd.connection.prepareStatement(sql);
statement.setString(1, cliente.getId_cgc_cpf());
resultSet = statement.executeQuery();
resultSet.next();
cliente.setId_cgc_cpf(resultSet.getString(1));
cliente.setCep(resultSet.getString(6));
cliente.setEndereco(resultSet.getString(7));
cliente.setNumero(resultSet.getString(8));
cliente.setComplemento(resultSet.getString(9));
cliente.setBairro(resultSet.getString(10));
cliente.setCidade(resultSet.getString(11));
cliente.setEstado(resultSet.getString(12));
cliente.setData_cadastro("" + resultSet.getString(13));
return true;
} catch(SQLException erro) {
System.out.println("erro: " + erro.toString() + sql + cliente.getId_cgc_cpf());
return false;
}
}
public String atualizar(int operacao) {
men = "Operação realizada com sucesso!";
try {
if(operacao == INCLUSAO) {
sql = "insert into clientes values (?, ?, ?, ?, ?, ?, ? , ?, ?, ?, ?, ?, ?)";
statement = bd.connection.prepareStatement(sql);
statement.setString(1, cliente.getId_cgc_cpf());
statement.setString(2, cliente.getFisica_juridica());
statement.setString(3, cliente.getNome_razao());
statement.setString(4, cliente.getEmail());
statement.setString(5, cliente.getTelefone());
statement.setString(6, cliente.getCep());
statement.setString(7, cliente.getEndereco());
statement.setString(8, cliente.getNumero());
statement.setString(9, cliente.getComplemento());
statement.setString(10, cliente.getBairro());
statement.setString(11, cliente.getCidade());
statement.setString(12, cliente.getEstado());
statement.setString(13, cliente.getData_cadastro());
} else if(operacao == ALTERACAO) {
sql = "update clientes set fisica_juridica = ?,"
+ " nome_razao = ?,"
+ " email = ?,"
+ " telefone = ?,"
+ " cep = ?,"
+ " endereco = ?,"
+ " numero = ?,"
+ " complemento = ?,"
+ " bairro = ?,"
+ " cidade = ?,"
+ " estado = ?,"
+ " data_cadastro = ? where id_cgc_cpf = ?";
statement = bd.connection.prepareStatement(sql);
statement.setString(13, cliente.getId_cgc_cpf());
statement.setString(1, cliente.getFisica_juridica());
statement.setString(2, cliente.getNome_razao());
statement.setString(3, cliente.getEmail());
statement.setString(4, cliente.getTelefone());
statement.setString(5, cliente.getCep());
statement.setString(6, cliente.getEndereco());
statement.setString(7, cliente.getNumero());
statement.setString(8, cliente.getComplemento());
statement.setString(9, cliente.getBairro());
statement.setString(10, cliente.getCidade());
statement.setString(11, cliente.getEstado());
statement.setString(12, cliente.getData_cadastro());
} else if(operacao == EXCLUSAO) {
sql = "delete from clientes where id_cgc_cpf = ?";
statement = bd.connection.prepareStatement(sql);
statement.setString(1, cliente.getId_cgc_cpf());
}
if(statement.executeUpdate() == 0) {
men = "Falha na operação!";
}
} catch (SQLException erro) {
men = "Falha na operação! " + erro.toString()+" "+sql;
}
return men;
}
}
/*
Columns:
id_cgc_cpf varchar(16) PK
fisica_juridica varchar(1)
nome_razao varchar(60)
email varchar(80)
telefone varchar(20)
cep varchar(9)
endereco varchar(60)
numero int
complemento varchar(40)
bairro varchar(60)
cidade varchar(40)
estado varchar(2)
data_cadastro datetime
*/
Você pode notar que o método localizar existe em todos os arquivos java DAO e que o problema está na linha que vem antes da pesquisa se o cliente está cadastrado. Isto porque, não quero cadastrar um endereço de entrega de um cliente se esse cliente não existe. Entendeu?
Mas toda esta programação é muito escolar, é só um estudo por enquanto. Estou escrevendo diversos cadastros e este é apenas um. É o primeiro cadastro de endereço de entrega, no caso endereço de entrega de cliente. Haverá também, cadastro de endereço de entrega onde o fornecedor deverá entregar.
Como eu disse: são apenas estudos para um sistema de controle de estoque com cliente, fornecedor, produto, pedidos à cliente e à fornecedor. Estou estudando.
Agradeço a atenção,
qualquer dúvida favor perguntar,
Ronaldo