-2
1-My DAO is inside the Control Class, as I do to separate it in a Daobairro?
2-The Connected Bank has Factory Standard (Connection Factory)?
Details here, with the codes: https://www.vivaolinux.com.br/topico/Java/MVC-como-separar-o-DAO-da-classe-Controle
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
Connection
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());
}
}
}
model package;
/**
*
* @author brainiac
*/
public class ModeloBairro {
private int cod;
private String nome;
private String cidade;
public int getCod() {
return cod;
}
public void setCod(int cod) {
this.cod = cod;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getCidade() {
return cidade;
}
public void setCidade(String cidade) {
this.cidade = cidade;
}
}
package;
import Conexao.ConectaBanco;
import Controle.ControleBairro;
import java.sql.SQLException;
import java.util.ArrayList;
import javax.swing.JOptionPane;
import javax.swing.ListSelectionModel;
import modelo.ModeloBairro;
import modelo.ModeloTabela;
/**
*
* @author brainiac
*/
public class FrmBairros extends javax.swing.JFrame {
ConectaBanco conectaBairro = new ConectaBanco();
ModeloBairro modeloBairro = new ModeloBairro();
ControleBairro controleBairro = new ControleBairro();
int flag = 1;
/**
* Creates new form FrmBairos
*/
public FrmBairros() {
initComponents();
conectaBairro.conexao();
btnNovo.setEnabled(true);
preencherTabela("SELECT * FROM bairro INNER JOIN cidade ON bairro.id_cidade = cidade.id_cidade");
atualizarCombo();
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jPanel1 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
txtCod = new javax.swing.JTextField();
txtNome = new javax.swing.JTextField();
jComboBoxCidade = new javax.swing.JComboBox<>();
jLabel3 = new javax.swing.JLabel();
btnAdd = new javax.swing.JButton();
btnNovo = new javax.swing.JButton();
btnSalvar = new javax.swing.JButton();
btnAlterar = new javax.swing.JButton();
btnDelete = new javax.swing.JButton();
btnPrimeiro = new javax.swing.JButton();
btnProximo = new javax.swing.JButton();
btnAnterior = new javax.swing.JButton();
btnUltimo = new javax.swing.JButton();
btnCancelar = new javax.swing.JButton();
btnSair = new javax.swing.JButton();
jScrollPane1 = new javax.swing.JScrollPane();
jTableBairro = new javax.swing.JTable();
jLabel4 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle("Cadastro de Bairros");
jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Formulário Cadastro de Bairros", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Arial Black", 1, 14), new java.awt.Color(255, 102, 51))); // NOI18N
jPanel1.setEnabled(false);
jLabel1.setText("Código:");
jLabel2.setText("Nome:");
txtCod.setEnabled(false);
txtNome.setToolTipText("Nome do Bairro");
jComboBoxCidade.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" }));
jLabel3.setText("Cidade:");
btnAdd.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagens/city.png"))); // NOI18N
btnAdd.setToolTipText("Adicionar outra Cidade, add another city");
btnAdd.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnAddActionPerformed(evt);
}
});
private void btnDeleteActionPerformed(java.awt.event.ActionEvent evt) {
modeloBairro.setCod(Integer.parseInt(txtCod.getText()));
controleBairro.excluir(modeloBairro);
btnNovo.setEnabled(true);
btnSalvar.setEnabled(false);
btnCancelar.setEnabled(true);
limpar();
txtNome.setEnabled(false);
preencherTabela("SELECT * FROM bairro INNER JOIN cidade ON bairro.id_cidade = cidade.id_cidade");
}
private void btnSalvarActionPerformed(java.awt.event.ActionEvent evt) {
if (flag == 1) { //7:43
modeloBairro.setNome(txtNome.getText());
modeloBairro.setCidade("" + jComboBoxCidade.getSelectedItem());
controleBairro.gravar(modeloBairro);
preencherTabela("SELECT FROM bairro INNER JOIN cidade ON bairro.id_cidade=cidade.id_cidade ");
} else {
modeloBairro.setNome(txtNome.getText());
modeloBairro.setCidade("" + jComboBoxCidade.getSelectedItem());
controleBairro.editar(modeloBairro);
preencherTabela("SELECT FROM bairro INNER JOIN cidade ON bairro.id_cidade=cidade.id_cidade ");
}
btnNovo.setEnabled(true);
btnSalvar.setEnabled(false);
btnCancelar.setEnabled(true);
txtNome.setEnabled(false);
jComboBoxCidade.setEnabled(true);
limpar();
}
private void btnAlterarActionPerformed(java.awt.event.ActionEvent evt) {
flag = 2;
btnNovo.setEnabled(false);
btnSalvar.setEnabled(true);
btnCancelar.setEnabled(true);
txtNome.setEnabled(true);
}
private void btnPrimeiroActionPerformed(java.awt.event.ActionEvent evt) {
modeloBairro = controleBairro.primeiro();
txtCod.setText(String.valueOf(modeloBairro.getCod()));
txtNome.setText(modeloBairro.getNome());
jComboBoxCidade.setSelectedItem(modeloBairro.getCidade());
btnDelete.setEnabled(true);
btnAlterar.setEnabled(true);
btnCancelar.setEnabled(true);
}
private void btnProximoActionPerformed(java.awt.event.ActionEvent evt) {
modeloBairro = controleBairro.proximo();
txtCod.setText(String.valueOf(modeloBairro.getCod()));
txtNome.setText(modeloBairro.getNome());
jComboBoxCidade.setSelectedItem(modeloBairro.getCidade());
btnDelete.setEnabled(true);
btnAlterar.setEnabled(true);
btnCancelar.setEnabled(true);
}
private void btnAnteriorActionPerformed(java.awt.event.ActionEvent evt) {
modeloBairro = controleBairro.anterior();
txtCod.setText(String.valueOf(modeloBairro.getCod()));
txtNome.setText(modeloBairro.getNome());
jComboBoxCidade.setSelectedItem(modeloBairro.getCidade());
btnDelete.setEnabled(true);
btnAlterar.setEnabled(true);
btnCancelar.setEnabled(true);
}
private void btnUltimoActionPerformed(java.awt.event.ActionEvent evt) {
modeloBairro = controleBairro.ultimo();
txtCod.setText(String.valueOf(modeloBairro.getCod()));
txtNome.setText(modeloBairro.getNome());
jComboBoxCidade.setSelectedItem(modeloBairro.getCidade());
btnDelete.setEnabled(true);
btnAlterar.setEnabled(true);
btnCancelar.setEnabled(true);
}
private void btnCancelarActionPerformed(java.awt.event.ActionEvent evt) {
btnNovo.setEnabled(true);
btnSalvar.setEnabled(false);
btnCancelar.setEnabled(true);
btnAlterar.setEnabled(false);
btnDelete.setEnabled(false);
limpar();
txtNome.setEnabled(false);
}
private void btnSairActionPerformed(java.awt.event.ActionEvent evt) {
this.dispose();
}
private void btnAddActionPerformed(java.awt.event.ActionEvent evt) {
FrmCidades frm= new FrmCidades();
frm.setVisible(true);
atualizarCombo();
}
public void preencherTabela(String SQL) {
ArrayList dados = new ArrayList();
String[] colunas = new String[]{"ID", "Bairro", "Cidade"};
conectaBairro.executaSQL(SQL);
try {
conectaBairro.rs.first();
// Abaixo preenchendo a tabela
do {
dados.add(new Object[]{
conectaBairro.rs.getInt("id_cidade"),
conectaBairro.rs.getString("nome_bairro"),
conectaBairro.rs.getString("nome_cidade")
});
} while (conectaBairro .rs.next());
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, " Erro ao preenchar o ArrayList!\n " + ex);
}
ModeloTabela modelo = new ModeloTabela(dados, colunas);
jTableBairro.setModel(modelo);
jTableBairro.getColumnModel().getColumn(0).setPreferredWidth(40); // Width é o tamanho em pixel
jTableBairro.getColumnModel().getColumn(0).setResizable(false); // não poderá aumentar o tamanhao com o mouse
jTableBairro.getColumnModel().getColumn(1).setPreferredWidth(300);
jTableBairro.getColumnModel().getColumn(1).setResizable(false);
jTableBairro.getColumnModel().getColumn(2).setPreferredWidth(250);
jTableBairro.getColumnModel().getColumn(2).setResizable(false);
// chamando a tabela
jTableBairro.getTableHeader().setReorderingAllowed(false);
jTableBairro.setAutoResizeMode(jTableBairro.AUTO_RESIZE_OFF);
jTableBairro.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); // vai poder slecionar apenas 1 eleento desta tabela
}
public void atualizarCombo() {
jComboBoxCidade.removeAllItems(); // REmove, limpa todos os itens do comboBox, para pode armazenar em seguida
try {
conectaBairro.executaSQL("SELECT * FROM cidade ORDER BY nome_cidade");
conectaBairro.rs.first(); // para preencher tabela precisa estar posicionado no primeiro registro
do {
jComboBoxCidade.addItem(conectaBairro.rs.getString("nome_cidade"));
} while (conectaBairro.rs.next());
} catch (SQLException ex) {
JOptionPane.showMessageDialog(rootPane, "Erro ao preencher ComboBox cidade!" + ex);
}
Please read this: https://pt.meta.stackoverflow.com/a/5484/28595
– user28595
Okay, the problem was the link? The code is there
– brainiac marco
I could summarize this code by posting exactly what you need. But it seems to me that you don’t know what MVC is. https://answall.com/a/55490/7130 I recommend deleting your question and refocusing it on your problem. A not something "I have it, I want to do it, do it for me"
– LeonanCarvalho
Leonan, the Code is already in MVC, but Dao is next to the control class, I would just like to know how to create a separate Dao class
– brainiac marco