Baixe o app para aproveitar ainda mais
Prévia do material em texto
Aprenda Fazendo Vamos implementar um pequeno sistema de cadastro de clientes para aplicar os conhecimentos aqui apresentados, bem como verificar a interligação dos campos com os componentes visuais. Exercício: Com o exercício feito na aula 6, vamos fazer um CRUD1 completo para a tabela Cliente no banco de dados dbCliente criado no PostgreSQL. A Interface a ser desenvolvida deverá seguir o padrão apresentado abaixo: Neste exemplo iremos utilizar as seguintes características: Consulta: Ao clicar no botão incluir, será feita uma pesquisa no banco para buscar todos os clientes da loja. Com o conjunto de dados retornado, são criados objetos Cliente e estes adicionados em uma lista. Vamos utilizar o ListIterator para andarmos na lista tanto para frente quando para trás. Observe que será apresentado o primeiro cliente e os botões estarão habilitados. O código para este passo é apresentado abaixo: 1 CRUD – Acrônimo para Create, Read, Update e Delete, que são as 4 operações básicas utilizadas em um banco de dados relacional. private void trataBtConsulta() { montaListaBanco(); } private void montaListaBanco() { try { Clientes.clear(); Class.forName("org.postgresql.Driver"); Connection con = DriverManager.getConnection("jdbc:postgresql:dbCliente","aluno","estacio"); Statement st = con.createStatement(); String sql = "SELECT * FROM tbcliente ORDER BY id;"; ResultSet rs = st.executeQuery(sql); while (rs.next()){ Cliente auxCliente = new Cliente(); auxCliente.setId(rs.getInt(1)); auxCliente.setNome(rs.getString(2)); Clientes.add(auxCliente); } apresenta_primeiro(); rs.close(); st.close(); con.close(); } catch(ClassNotFoundException e){ System.out.println(e.toString()); } catch(Exception e) { System.out.println(e.toString()); } } Vários métodos foram criados para auxiliar a programação e evitar a repetição de código. Abaixo eles estão apresentados: private void apresenta_primeiro() { it = Clientes.listIterator(); jBtnAnterior.setEnabled(true); jBtnProximo.setEnabled(true); jBtnInclui.setEnabled(true); jBtnAtualiza.setEnabled(true); jBtnExclui.setEnabled(true); mostraCliente((Cliente)it.next()); } private void mostraCliente(Cliente cliente) { jTFId.setText(Integer.toString(cliente.getId())); jTFNome.setText(cliente.getNome()); } private void mostraMsg(String s){ jLblMsg.setText(s); } Ao clicar nos botões anterior e próximo, iremos andar pela lista independente do banco de dados. Neste exemplo, não estamos implementando o isolamento entre a camada de interface com a camada de dados, como sugerido e aconselhado nas boas práticas de programação. Um ótimo exercício após a execução deste exercício é refazer apresentando este isolamento. É sempre bom lembrar que é fundamental para o seu sistema funcionar a instalação do JDBC no projeto, neste caso, o do PostgreSQL. Ao clicar no botão Incluir, foi criado uma estrutura de inclusão de dados, onde limpamos os campos e habilitamos o botão Incluir. Quando clicamos no botão Incluir, o objeto Cliente é criado e incluído no banco de dados. O botão de Inclusão serve tanto para incluir quanto para alterar. Para isso, foi colocado um comando if para determinar que parte do código deverá ser executado. private void trataBtInclui() { limpaCampos(); habilitaConsulta(false); mostraMsg("Entre com os valores"); jBtnIncluir.setText("Incluir"); jBtnIncluir.setVisible(true); jBtnIncluir.setEnabled(true); } private void trataBtIncluir() { Cliente auxCliente; String retorno; auxCliente = new Cliente(); auxCliente.setId(Integer.parseInt(jTFId.getText())); auxCliente.setNome(jTFNome.getText()); retorno = incluiClienteBD(auxCliente); mostraMsg(retorno); jBtnIncluir.setVisible(false); jBtnIncluir.setEnabled(false); montaListaBanco(); habilitaConsulta(true); } private String incluiClienteBD(Cliente auxCliente) { int registrosAfetados=0; if((jBtnIncluir.getText()).equals("Incluir")){ try { Class.forName("org.postgresql.Driver"); Connection con = DriverManager.getConnection("jdbc:postgresql:dbCliente","aluno","estacio"); Statement st = con.createStatement(); String sql = "INSERT INTO tbcliente VALUES ("+Integer.toString(auxCliente.getId())+",'"+auxCliente.getNome()+"')"; registrosAfetados=st.executeUpdate(sql); st.close(); con.close(); } catch(ClassNotFoundException e){ System.out.println(e.toString()); } catch(Exception e) { System.out.println(e.toString()); } if (registrosAfetados>0) return("Cliente Cadastrado"); else return("Nenhum cliente foi cadastrado"); } else{ jTFId.setEditable(true); jBtnAtualiza.setText("Atualizar"); try { Class.forName("org.postgresql.Driver"); Connection con = DriverManager.getConnection("jdbc:postgresql:dbCliente","aluno","estacio"); Statement st = con.createStatement(); String sql = "UPDATE tbcliente SET nome='"+jTFNome.getText()+"' WHERE id="+jTFId.getText(); registrosAfetados=st.executeUpdate(sql); st.close(); con.close(); } catch(ClassNotFoundException e){ System.out.println(e.toString()); } catch(Exception e) { System.out.println(e.toString()); } if (registrosAfetados>0) return("Cliente Alterado"); else return("Nenhum cliente foi alterado"); } } Podemos observar que toda a parte da alteração já está pronta neste métodos acima. Ao clicarmos no botão Excluir, será solicitado a confirmação da exclusão do elemento apresentado na tela. Caso a resposta seja positiva, removemos o elemento do banco de dados e é solicitado para se montar a lista novamente. private void trataBtExcluir() { int resp; resp = JOptionPane.showConfirmDialog(null, "Confirma a exclusão do registro "+jTFId.getText()+" ?","Confirmação de Exclusão",JOptionPane.YES_NO_OPTION); if (resp==0) mostraMsg(removeElementoBanco(Integer.parseInt(jTFId.getText()))); } private String removeElementoBanco(int identificador) { int registrosAfetados=0; try { Class.forName("org.postgresql.Driver"); Connection con = DriverManager.getConnection("jdbc:postgresql:dbCliente","aluno","estacio"); Statement st = con.createStatement(); String sql = "DELETE FROM tbcliente WHERE ID="+identificador; registrosAfetados=st.executeUpdate(sql); st.close(); con.close(); } catch(ClassNotFoundException e){ System.out.println(e.toString()); } catch(Exception e) { System.out.println(e.toString()); }if (registrosAfetados>0) return("Cliente Removido"); else return("Nenhum cliente foi removido"); } No Botão Alterar, foi implementado a opção do usuário cancelar a alteração. Abaixo está apresentado o método. private void trataBtAltera() { if((jBtnAtualiza.getText()).equals("Atualizar")){ habilitaConsulta(false); jBtnExclui.setEnabled(false); jBtnInclui.setEnabled(false); mostraMsg("Entre com os valores"); jBtnIncluir.setText("Alterar"); jBtnAtualiza.setText("Cancelar"); jBtnIncluir.setVisible(true); jBtnIncluir.setEnabled(true); jTFId.setEditable(false); } else { habilitaConsulta(true); jBtnExclui.setEnabled(true); jBtnInclui.setEnabled(true); mostraMsg("Atualização Cancelada"); jBtnIncluir.setText("Incluir"); jBtnAtualiza.setText("Atualizar"); jBtnIncluir.setVisible(false); jBtnIncluir.setEnabled(false); jTFId.setEditable(true); } }
Compartilhar