1-Meu DAO está dentro da Classe ControleBairro, como faço para separá-lo numa DaoBairro?
2-O ConectaBanco tem o padrão Factory (Fábrica de conexão)?
package Controle;
import Conexao.ConectaBanco;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import javax.swing.JOptionPane;
import modelo.ModeloBairro;
/**
*
* @author brainiac
*/
public class ControleBairro {
ConectaBanco conex = new ConectaBanco();
ConectaBanco conexPesq = new ConectaBanco();
String cidade = null;
int codCid = 0;
// inserir dados no BD
public void gravar(ModeloBairro obj) {
conex.conexao();
try {
conex.executaSQL("SELECT * FROM cidade WHERE nome_cidade='"+obj.getCidade()+"'");
conex.rs.first();
codCid = conex.rs.getInt("id_cidade");
PreparedStatement pst = conex.con.prepareStatement("INSERT INTO bairro (nome_bairro, id_cidade) VALUES(?, ?)");
pst.setString(1, obj.getNome());
pst.setInt(2, codCid);
pst.execute();
JOptionPane.showMessageDialog(null, "Inserido com sucesso pela Camada Controle");
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, "Não Inserido pela Camada Controle!"+ex);
}
conex.desconecta();
}
// Botão Primeiro
public ModeloBairro primeiro() {
conex.conexao();
ModeloBairro modBairro = new ModeloBairro();
conexPesq.conexao();
conex.executaSQL("SELECT * FROM bairro");
try {
conex.rs.first();
conexPesq.executaSQL("SELECT * FROM cidade WHERE id_cidade=" +conex.rs.getInt("id_cidade"));
conexPesq.rs.first();
cidade = conexPesq.rs.getString("nome_cidade");
modBairro.setCod(conex.rs.getInt("id_bairro"));
modBairro.setNome(conex.rs.getString("nome_bairro"));
modBairro.setCidade(cidade);
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, "erro ao mostrar dados na Camada Controle!"+ex);
}
conex.desconecta();
conexPesq.desconecta();
return modBairro;
}
// Botão anterior
public ModeloBairro anterior() {
conex.conexao();
ModeloBairro modBairro = new ModeloBairro();
conexPesq.conexao();
try {
conex.rs.previous();
conexPesq.executaSQL("SELECT * FROM cidade WHERE id_cidade=" +conex.rs.getInt("id_cidade"));
conexPesq.rs.first();
cidade = conexPesq.rs.getString("nome_cidade");
modBairro.setCod(conex.rs.getInt("id_bairro"));
modBairro.setNome(conex.rs.getString("nome_bairro"));
modBairro.setCidade(cidade);
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, "erro ao mostrar dados na Camada Controle!"+ex);
}
conexPesq.desconecta();
return modBairro;
}
// botão próximo
public ModeloBairro proximo() {
conex.conexao();
ModeloBairro modBairro = new ModeloBairro();
conexPesq.conexao();
try {
conex.rs.next();
conexPesq.executaSQL("SELECT * FROM cidade WHERE id_cidade=" +conex.rs.getInt("id_cidade"));
conexPesq.rs.first();
cidade = conexPesq.rs.getString("nome_cidade");
modBairro.setCod(conex.rs.getInt("id_bairro"));
modBairro.setNome(conex.rs.getString("nome_bairro"));
modBairro.setCidade(cidade);
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, "erro ao mostrar dados na Camada Controle!"+ex);
}
conexPesq.desconecta();
return modBairro;
}
// botão último
public ModeloBairro ultimo() {
conex.conexao();
ModeloBairro modBairro = new ModeloBairro();
conexPesq.conexao();
conex.executaSQL("SELECT * FROM bairro");
try {
conex.rs.last();
conexPesq.executaSQL("SELECT * FROM cidade WHERE id_cidade=" +conex.rs.getInt("id_cidade"));
conexPesq.rs.first();
cidade = conexPesq.rs.getString("nome_cidade");
modBairro.setCod(conex.rs.getInt("id_bairro"));
modBairro.setNome(conex.rs.getString("nome_bairro"));
modBairro.setCidade(cidade);
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, "erro ao mostrar dados na Camada Controle!"+ex);
}
conex.desconecta();
conexPesq.desconecta();
return modBairro;
}
//Alterar dado no BD
//Alterar dado no BD
public void editar(ModeloBairro obj) {
conex.conexao();
conexPesq.conexao();
//JOptionPane.showMessageDialog(null, obj.getCod_estado());
try {
conexPesq.executaSQL("SELECT * FROM cidade WHERE nome_cidade="+obj.getNome());
conexPesq.rs.first();
codCid= conex.rs.getInt("id_cidade");
PreparedStatement pst= conex.con.prepareStatement("UPDATE bairro SET nome_bairro=?, id_cidade=? WHERE id_bairro=?");
pst.setString(1, obj.getNome());
pst.setInt(2, codCid);
pst.setInt(3, obj.getCod());
pst.execute();
JOptionPane.showMessageDialog(null, "Dados Editados com sucesso pela Camada Controle!");
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, "Dados não Editados com sucesso pela Camada Controle!");
}
conex.desconecta();
conexPesq.desconecta();
}
public void excluir(ModeloBairro obj) {
conex.conexao();
conexPesq.conexao();
//JOptionPane.showMessageDialog(null, obj.getCod_estado());
try {
PreparedStatement pst= conex.con.prepareStatement("DELETE FROM bairro WHERE id_bairro=?");
pst.setInt(1, obj.getCod());
pst.execute();
JOptionPane.showMessageDialog(null, "Dados Excluídos com sucesso pela Camada Controle!");
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, "Dados não Excluídos com sucesso pela Camada Controle!");
}
conex.desconecta();
conexPesq.desconecta();
}
}// fim
Este segue o padrão Factory?
package Conexao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
public class ConectaBanco {
// importar com opçãp java.sql
public Statement stm; // responsável porpreparar e realizar pesquiss no BD
public ResultSet rs; // resp. por armazenar o resultado de uma pesquisa passada para o Statement
public Connection con; // resp. por
private String DRIVER = "org.postgresql.Driver"; // Responsável por identificar o srviço de BD
private String URL = "jdbc:postgresql://localhost:5432/sist_estoq_venda"; // resp. por setar o local do BD
private String USER = "postgres";
private String PASS = "123"; // resp. por realizar a conexaão com o BD
// Paraconectar com outro servidor devee-se mudar os valores declados como privados acima
public void conexao(){ // Método responsável por realizaar a conxão com o BD
try { // tentativa inicial
System.setProperty("jdbc.Drivers", DRIVER); // seta a propriedade do driver de conexão
con = DriverManager.getConnection(URL, USER, PASS);
//JOptionPane.showMessageDialog(null, "Conectado com sucesso!");// realiza a conexã o com o BD
} catch (SQLException ex) { // exceção, caso o try falhe cai aqui
JOptionPane.showMessageDialog(null, "Erro de conexão\n Erro: " +ex.getMessage());
}
}
public void executaSQL(String sql){
try {
stm = con.createStatement(rs.TYPE_SCROLL_INSENSITIVE, rs.CONCUR_READ_ONLY);
rs = stm.executeQuery(sql);
} catch (SQLException ex) {
//JOptionPane.showMessageDialog(null, "Erro NO EXECUTAsql() \n Erro: " +ex.getMessage());
}
}
public void desconecta(){ // Método para fechara a conexão com o BD
try {
con.close();
//JOptionPane.showMessageDialog(null, "Conexão fechada com sucesso!", "Aviso", JOptionPane.INFORMATION_MESSAGE);
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, "Erro ao fechara conexão \n Erro: " +ex.getMessage());
}
}
}
Detalhes maiores em:
https://www.vivaolinux.com.br/topico/Java/MVC-como-separar-o-DAO-da-classe-Controle