• Nenhum resultado encontrado

Especialização em web com interfaces ricas

N/A
N/A
Protected

Academic year: 2021

Share "Especialização em web com interfaces ricas"

Copied!
23
0
0

Texto

(1)

Especialização em web com interfaces

ricas

Acessando Bancos de Dados com Java

-Versão Gráfica (Continuação)

Prof. Fabrízzio Alphonsus A. M. N. Soares

fabrizzio@inf.ufg.br professor.fabrizzio@gmail.com Instituto de Informática

(2)

Bancos de Dados com Java

Nesta aula finalizaremos a montagem do aplicativo visual com acesso a banco de dados.

(3)

Tabela - Exemplo I

Tabela: cliente matricula integer nome varchar(50) idade integer sexo char(1)

(4)
(5)

Pesquisando os clientes I

Existem várias abordagens para se efetuar a consulta dos clien-tes.

Abaixo seguem alguns exemplos:

1 Criar um botão de pesquisa que utiliza os dados do

campo matrícula

2 Criar um botão de pesquisa que abre uma nova janela

para realizar a pesquisa dos clientes

3 Pesquisar automaticamente assim que o usuário tira o

(6)

Pesquisando os clientes II

Nesta aula iremos realizar as abordagens 1 e 3.

Porém, embora vamos nesta aula fazer esses dois modos. Não é interessante fornecer ambos ao usuário. É fundamental fornecer só um. Muitas opções para a mesma coisa tendem a confundir o usuário.

Ambas as formas tem vantagens. Escolha aquela que se enquadre na sua necessidade ou padrão.

(7)

Criando um botão para pesquisa I

Botão declarado no corpo do formulário:

1 private JButton pesquisar;

Inicialização do botão:

1 pesquisar = new JButton("Pesquisar");

2 content.add(pesquisar);

(8)

Criando um botão para pesquisa II

Adicionando o evento ao botão

1 pesquisar.addActionListener(new ActionListener() {

2 public void actionPerformed(ActionEvent evt){

3 pesquisarActionPerformed(evt);

4 }

5 });

Método pesquisarActionPerformed

1 private void pesquisarActionPerformed(ActionEvent evt){

2 if (pesquisarDados() == false)

3 JOptionPane.showMessageDialog(this, "Matrícula não

encontrada");

(9)

Criando um botão para pesquisa III

Criando o método de pesquisa

1 private booleanpesquisarDados(){ 2 if(matricula.getText().length() == 0){ 3 numeroMatricula = 0; 4 return false; 5 } 6 try { 7 PreparedStatement st = cn.prepareStatement( 8 "select * from cliente where matricula = ?"

9 ); 10 st.setInt(1,Integer.parseInt(matricula.getText())); 11 ResultSet rs = st.executeQuery(); 12 13 if(rs.next()) { 14 15 nome.setText(rs.getString("nome")); 16 idade.setText(rs.getString("idade")); 17 18 if(rs.getString("sexo").equals("M")) 19 sexo.setSelectedIndex(0); 20 else 21 sexo.setSelectedIndex(1); 22 23 numeroMatricula = rs.getInt("matricula");

(10)

Criando um botão para pesquisa IV

27 st.close(); 28 29 return true; 30 } else { 31 numeroMatricula = 0; 32 rs.close(); 33 st.close(); 34 return false; 35 } 36 37 } catch (SQLException e) { 38 JOptionPane.showMessageDialog( 39 this,

40 "Erro ao pesquisar o registro."

41 );

42 }

43 return false; 44 }

(11)

Pesquisando quando a caixa de texto

perde o foco I

Evento Focus Lost Imports necessários

1 import java.awt.event.FocusAdapter; 2 import java.awt.event.FocusEvent;

Adicionando o evento à caixa de texto

1 matricula.addFocusListener(new FocusAdapter() {

2 public void focusLost(FocusEvent evt) {

3 matriculaFocusLost(evt);

4 }

(12)

Pesquisando quando a caixa de texto

perde o foco II

Método matriculaFocusLost

1 private void matriculaFocusLost(FocusEvent evt){

2 pesquisarDados();

(13)

Organizando o código

É recomendável se separar o código sempre em funções que reflitam sua finalidade.

Lembre-se: Funções devem fazer apenas uma coisa e muito bem feita!

Assim, funções que fazem uma única coisa geralmente são pe-quenas. Se sua função está grande, provavelmente ela faz mais de uma coisa.

(14)

Dividindo as funções I

Evento e função para excluir

1 private void excluirActionPerformed(ActionEvent evt){

2 excluirCliente();

(15)

Dividindo as funções II

1 private void excluirCliente(){

2 if (numeroMatricula == 0){

3 JOptionPane.showMessageDialog(this, "Pesquise uma

matrícula antes de excluí-la.");

4 matricula.requestFocus();

5 return;

6 }

7 try {

8 PreparedStatement st = cn.prepareStatement("delete from

cliente where matricula = ?");

9 st.setInt(1,Integer.parseInt(matricula.getText()));

10 st.execute();

11 st.close();

12 limparCampos();

13 } catch (SQLException e) {

14 JOptionPane.showMessageDialog(this, "Erro ao inserir o

registro.");

15 }

(16)

Dividindo as funções III

Evento e função para salvar

1 private void salvarActionPerformed(ActionEvent evt){

2 inserirCliente();

(17)

Dividindo as funções IV

1 private void inserirCliente(){

2 try {

3 PreparedStatement st = cn.prepareStatement(

4 "insert into cliente (matricula, nome, idade, sexo)

values (?, ?, ?, ?)"); 5 st.setInt(1,Integer.parseInt(matricula.getText())); 6 st.setString(2, nome.getText()); 7 st.setInt(3, Integer.parseInt(idade.getText())); 8 if (sexo.getSelectedIndex() == 0) st.setString(4, "M"); 9 else st.setString(4, "F"); 10 st.execute(); 11 st.close();

12 JOptionPane.showMessageDialog(this, "Cliente inserido com

sucesso.");

13 limparCampos();

14 } catch (SQLException e) {

15 JOptionPane.showMessageDialog(this, "Erro ao inserir o

registro.");

(18)

Alterando o cliente I

Uma tarefa importante é atualizar os dados do cliente.

Para realizar tal tarefa, é conveniente que os dados do cliente já tenham sido lidos, afinal, eles vão ser alterados.

(19)

Alterando o cliente II

Assim, é preciso então ter um controle se os dados já foram consultados para serem alterados.

Uma forma de fazer isto é criar uma variável que irá conter valores que definirão estados.

Por exemplo: Novo Carregado

(20)

Alterando o cliente III

A abordagem adotada aqui será utilizar uma variável int para conter a matrícula pesquisada. E os estados poderão ser os seguintes:

Se o cliente não foi pesquisado, foi pesquisado e não foi encontrado, ou foi clicado no botão novo a variavel numeroMatricula conterá o valor ZERO;

Se o cliente foi pesquisado e encontrado a variável numeroMatricula conterá o valor do campo matrícula.

(21)

Implementando a função de alteração I

1 private void atualizarCliente(){

2 try {

3 PreparedStatement st = cn.prepareStatement(

4 "update cliente set nome = ?, idade = ?, sexo = ? where

matricula = ?"); 5 st.setString(1, nome.getText()); 6 st.setInt(2, Integer.parseInt(idade.getText())); 7 if (sexo.getSelectedIndex() == 0) st.setString(3, "M"); 8 else st.setString(3, "F"); 9 st.setInt(4,Integer.parseInt(matricula.getText())); 10 st.execute(); 11 st.close();

12 JOptionPane.showMessageDialog(this, "Cliente alterado com

sucesso.");

13 limparCampos();

14 } catch (SQLException e) {

15 JOptionPane.showMessageDialog(this, "Erro ao atualizar o

(22)

Implementando a função de alteração II

Alterando o botão salvar

1 private void salvarActionPerformed(ActionEvent evt){

2 if (numeroMatricula == 0)

3 inserirCliente();

4 else

5 atualizarCliente();

(23)

Implementando a função de alteração III

É importante lembrar que se a variável numeroMatricula é uti-lizada para validar as situações em que o registro será salvo é importante mante-la bem atualizada.

Assim, ela deverá ser modificada para acompanhar os estados da aplicação.

Se foi clicado no botão novo, na pesquisa não foi encontrado um registro, ou o registro foi excluído. Deve se atribuir ZERO à variável.

Se for pesquisado e encontrado, ou o registro for alterados o um registro deve-se atribuir o número da matrícula em uso.

Referências

Documentos relacionados

Elabore para os moradores do Edifício Jequitinhonha uma convocação para uma palestra sobre segurança.. Essa palestra vai contar com a presença do sargento Marcos do Corpo

O tratamento repetido destes ratos com o metilfenidato (droga psicoestimulante de escolha para o tratamento do TDAH) ou a exposição contínua a ambientes lúdicos durante a

No âmbito das universidades, a Política Nacional de Extensão Universitária (BRASIL, 2012) soma-se aos diversos esforços em benefício do desenvolvimento

••  Alimentação racional e desvios ali  Alimentação racional e desvios alimentares mentares ••  Actividade física e repouso  Actividade física e repouso.. ••

membros da banca examinadora: Prof. Alexandre Roberto Lunsqui, Profª

Loff vai assinalando, no meio de um apreciável manancial de informação – com algumas significativas hesitações e qualificações – uma tese alternativa à dominante que

Desse modo, autores como Lima Barreto, Graça Aranha e Monteiro Lobato mostraram, em prosa, um Brasil sem retoques, enquanto o poeta Augusto dos Anjos revelava sua descrença

As informações básicas sobre a forma de acesso às referências bibliográficas e ao material de apoio, as propostas de atividades, bem como os aplicativos necessários para