Vou mandar alguns métodos pra ajudar a compreender:
Estes métodos estão no Frame AtualizarEndereço(recebo como paramentro o resultset da busca pelo contato e outro resultset da busca pelo endereço) que além de atualizar o endereço tb atualiza o contato(nome e nascimento):
private void initialize() {
this.setSize(300, 220);
this.setContentPane(getJContentPane());
this.setTitle(“Atualizar Endereço”);
try {
while (rs.next()) {
nome = rs.getString("nome");
jtNome.setText(nome);
SimpleDateFormat dtfGeral = new SimpleDateFormat("dd/MM/yyyy");
String geral = dtfGeral.format(java.sql.Date.valueOf(rs
.getString("nasc")));
jtNascimento.setText(geral);
}
while (rs1.next()) {
jtLogradouro.setText(rs1.getString("logradouro"));
jtNumero.setText(rs1.getString("numero"));
jtBairro.setText(rs1.getString("bairro"));
jtCep.setText(rs1.getString("cep"));
jtComplemento.setText(rs1.getString("complemento"));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Este método retorna a ação do botão:
private JButton getJButton() {
if (jButton == null) {
jButton = new JButton();
jButton.setBounds(new Rectangle(108, 160, 55, 21));
jButton.setText(“OK”);
jButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
AgendaBO agenda = new AgendaBO();
Date data;
c = agenda.buscarContato(nome);
try {
data = Contato.parseDateSQL(jtNascimento.getText());
c.setNasc(data);
c.setNome(jtNome.getText());
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
em = agenda.buscarEndereco(c.getId());
em.setBairro(jtBairro.getText());
em.setCep(jtCep.getText());
em.setLogradouro(jtLogradouro.getText());
em.setComplemento(jtComplemento.getText());
int num = Integer.parseInt(jtNumero.getText());
em.setNumero(num);
System.out.println(c.getNome());
System.out.println(c.getId());
agenda.atualizar(c, em);
JOptionPane.showMessageDialog(null,
"Cadastro Atualizado com Sucesso!");
}
});
}
return jButton;
}
Este método é a ação do botao que está no Frame agenda(principal):
private JButton getJAtEndereco() {
if (jAtEndereco == null) {
jAtEndereco = new JButton();
jAtEndereco.setBounds(new Rectangle(102, 69, 151, 35));
jAtEndereco.setFont(new Font(“Dialog”, Font.BOLD, 10));
jAtEndereco.setText(“Alterar Nome/Endereço”);
jAtEndereco.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
AgendaBO agenda = new AgendaBO();
if (agenda.buscarContato(jtNome.getText()).getNome() == null)
JOptionPane.showMessageDialog(null,
“Cadastro inexistente!”);
else {
c = agenda.buscarContato(jtNome.getText());
new AtualizarEndereco(agenda.listarContatosPorId(c
.getId()), agenda.listarEnderecos(c.getId()));
}
}
});
}
return jAtEndereco;
}
Este método está na AgendaBO:
public void atualizar(Contato c,Endereco en) {
try {
ContatoDAO contato = new ContatoDAO();
EnderecoDAO endereco = new EnderecoDAO();
contato.atualizar(c);
endereco.atualizar(en);
} catch (SQLException s) {
System.out.println('\n' + "Erro na conexão com o banco");
}
}
Estes métodos estão no ContatoDAO:
public Contato buscar(String nome) {
Contato c= new Contato();
try {
c.setNasc(Contato.parseDateSQL("00/00/0000"));
Statement stmt = this.conexao.createStatement();
String query = "SELECT ID,NOME,NASC FROM CONTATO WHERE nome=" + "'" + nome
+ "'";
res = stmt.executeQuery(query);
while (res.next()) {
c.setId(res.getInt("id"));
c.setNome(res.getString("nome"));
c.setNasc(res.getDate("nasc"));
}
stmt.close();
} catch (SQLException e) {
System.out.println("Erro duranta a pesquisa:" + e.getMessage());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return c;
}
public boolean atualizar(Contato c) {
boolean testa = false;
try {
Statement stmt = this.conexao.createStatement();
String query = "UPDATE CONTATO SET NOME= '" + c.getNome()
+ "' WHERE ID=" + c.getId() + ";"
+ "UPDATE CONTATO SET NASC= '" + c.getNasc() + "' WHERE ID="
+ c.getId();
res = stmt.executeQuery(query);
stmt.close();
testa = true;
} catch (SQLException e) {
System.out.println("Erro duranta a inserção:" + e.getMessage());
}
return testa;
}
}
E está classe é a que faz a conexão:
package br.com.ffm.agenda.conexao;
import java.sql.*;
/**
-
@author Marciano Gonçalves
-
*/
public class ConexaoHSQLDB {
private static ConexaoHSQLDB conexao = null;
private Connection conn;
/**
*
*/
public ConexaoHSQLDB() {
try {
Class.forName("org.hsqldb.jdbcDriver");
conn = DriverManager
.getConnection("jdbc:hsqldb:file:bd/bancoAgenda");
} catch (SQLException e) {
System.out.println('\n' + "Erro na conexão com o banco");
e.printStackTrace();
System.exit(1);
} catch (ClassNotFoundException e) {
System.out
.println('\n' + "Classe do driver do banco de dados não encontrada");
}
}
/**
* @return
*/
public static Connection getConnection() {
if (conexao == null) {
conexao = new ConexaoHSQLDB();
}
return conexao.conn;
}
/**
*
*/
public void close() {
try {
conn.createStatement().execute("shutdown");
conn.close();
} catch (SQLException ex) {
ex.printStackTrace();
}
}
}