Especialização em web com interfaces ricas

Documentos relacionados
UFG - Instituto de Informática

De forma simples, para a execução de comandos SQL com JDBC, precisa-se da instancia de três classes Java. São elas: Nome da classe Função

Java - Conexão ao Banco de Dados usando JDBC

DATA ACCESS OBJECT (DAO)

Exercícios de fixação: Listas

Padrões de Projeto e Persistência com DAO

JDBC. Prof. Márcio Bueno

S U B G R U P O S D M L E D Q L : A L T E R A N D O E A P A G A N D O D A D O S E M U M A T A B E L A

Especialização em web com interfaces ricas

Programação Orientada a Objetos II

Linguagem de Programação III

Banco de dados POO Márcio Delamaro. Programação Orientada a Objetos Prof Marcio Delamaro ICMC/USP

Especialização em web com interfaces ricas. Boas Práticas de Programação

Programação Orientada a Objetos II

Código-Fonte da Prática 02

1) Responda de acordo com os conceitos de orientação a objetos (0,5).

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas

Acesso a banco de dados

Lista de exercícios I - RESPOSTAS Servlets e banco de dados

JDBC JDBC. JDBC - Arquitetura. JDBC Arquitetura Pacote Java.sql. Java Database Connectivity JDBC PostgreSQL

FTIN FORMAÇÃO TÉCNICA EM INFORMÁTICA. Módulo de Programação Prof. Bruno Maciel

Código-Fonte da Prática 04

Funcionamento da Aplicação. Simulações do funcionamento. Simulação SAC

Java Básico JDBC. Razer Anthom Nizer Rojas Montaño Banco de Dados: JDBC

FTIN FORMAÇÃO TÉCNICA EM INFORMÁTICA. Módulo de Programação Prof. Flávio Dantas

Banco de Dados. -Aprendendo conceitos -Usando o SQL Conf para: -Conectar no banco de dados -Criar, alterar, excluir e consultar estruturas de tabelas

Aula Prática Criando Views e Controles

JDBC. Siga as instruções para instalar o banco de dados H2 e criar a tabela Alunos.

Módulo 5 - JDBC java.sql - Conexão com Banco de Dados

A U L A 1 0 C R I A N D O V I E W S V I E W S ( V I S Õ E S )

Tipos, Literais, Operadores

Tipos, Literais, Operadores

Linguagem de Programação II Implementação

JavaFX Classe de Controle e Eventos. Prof. Vicente Paulo de Camargo

Web Services. EclipseSDK/DB2 Construindo/Consumindo Serviços

Implementar um exemplo de relacionamento entre classes um para muitos (1:N) e um para um (1:1). Sistema para uma Promotora de Evento Agenda Anual

Android e Bancos de Dados

Persistência de Objetos no SGBD PostgreSQL, Utilizando as APIs: JDBC, JDK, Swing e Design Patteners DAO.

Agenda. Instalação e configuração. Processamento de comandos SQL com JDBC. Driver JDBC Criação da classe de conexão

Computação L2. Linguagem C++ Observação: Material Baseado na Disciplina Computação Eletrônica.

Curso: Desenvolvimento Java

LINGUAGEM DE PROGAMAÇÃO II Criando uma Classe

ACESSO AO BANCO DE DADOS PARTE 2 ALTERAÇÃO, EXCLUSÃO E INCLUSÃO DE REGISTROS

Tutorial SQL Server 2014 Express

Android e Bancos de Dados

Programação Orientada a Objetos JDBC Java Database Connectivity

Java & Bancos de Dados Adaptado de Slides da Universidade Salgado de Oliveira Goiânia


Exercício de Estrutura de dados. Java Fila

Elaborando as Interfaces Aulas 31, 32 e 33

AULA 14 ESTRUTURA DE DADOS

Transacções. Vitor Vaz da Silva

Introdução Conceitos Iniciais Metodologia Web Services Considerações Finais. Introdução. Conceitos Iniciais Metodologia

SISTEMA EXPERIMENTALL 15/11/2009. Olá! A partir de agora vamos conhecer a IDE NetBeans efetuando um micro projeto swing.

Algoritmos e Programação 2. Objetos e Classes em Java. Classes. Revisão. Definições de classes incluem (geralmente):

Java JDBC Aplicação Java com Acesso a um SGBD. Ricardo Terra (rterrabh [at] gmail.com) Java JDBC Maio, 2010

RESULUÇÃO DOS EXERCÍCIOS E INSTRUÇÕES DE DECISÃO (if{} e else{}) Profº André Aparecido da Silva Disponível em:

Modulo 8 - Padrão DAO (Dta Access Object) Prof. Sheila Cáceres

Persistência Java para Web com MySQL

Atualização e Inserção de Dados. SQL Avançado. Pedro F. Carvalho OCP Oracle g

Sintaxe Básica de Java Parte 2

Linguagem de Programação III

Aula Prática JBCD - Introdução

Objetivo: Aplicar a técnica de encapsulamento no sistema de gestão acadêmica

Como criar um banco de dados usando o mysql

Listando, gravando, alterando e excluindo registro do banco de dados com JSP

BANCO DE DADOS GERENCIAL 1 A U L A 2

Banco de Dados I Introdução SQL

Banco de Dados. Banco de Dados. Alcides Pamplona Alcides Pamplona Linguagem de Programação CESBD 2010

Banco de Dados. Banco de Dados Parte 2. Alcides Pamplona Alcides Pamplona Linguagem de Programação CESBD 2010

Programação Orientada a Objetos (utilizando C#) Professor Emiliano S. Monteiro Versão 12 Out/2016.

Programação Gráfica em Java Alguns Componentes javax.swing

Estrutura de Dados Listas

22/05/2012 CRIANDO UM PROJETO COM TELAS ESTRUTURA DA APLICAÇÃO LOGIN BANCO DE DADOS TAREFAS PHP MYSQL PARTE 2

Associação 1:1. Baseado no Diagrama de Classe a seguir, iremos criar as classes de Modelagem que compõem a Associação de Piloto com Carro.

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula 09a- Acessando os dados através JDBC

Integrando Java com Banco de Dados

Introdução à Banco de Dados em Delphi:

show databases Programação Comercial Walderson Shimokawa 1

Lista de Exercícios da disciplina Aplicações de Linguagem de Programação Orientada a objetos

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula de Revisão para AV1

Introdução à Orientação a Objetos em Java

C# - Conexão com MySQL

Orientação a Objetos AULA 09

Linguagens de Programação

A U L A 3 S U B G R U P O S D M L E D Q L : I N S E R I N D O E P E S Q U I S A N D O D A D O S E M U M A T A B E L A

Universidade Federal de Uberlândia Faculdade de Computação Programação Orientada a Objetos II Prof. Fabiano Dorça. Padrão Observer (Observador)

CONEXÃO JAVA - BANCO DE DADOS

Construção de Aplicações de Acesso a Banco de Dados Parte II (Relação Mestre/Detalhe)

Automação em Telas. Desenvolvimento IBM Maximo nível 1. Leonardo Almeida Bastos Versão 1.0

ENG 390. Universidade Federal de Viçosa. Programação Aplicada à Agricultura Aulas Práticas. Departamento de Engenharia Agrícola

Banco de Dados. Banco de Dados

MANIPULAÇÃO DE BANCO DE DADOS UTILIZANDO INTERFACE GRÁFICA

Apêndice A. Alguns construtores e métodos importantes e úteis da classe Vector são:

Programa Institucional de Bolsa de Iniciação à Docência PIBID MANUAL DE OPERAÇÃO

Desenvolvimento Web TCC Turma A-1

ALGORITMOS. Professor: Diego Oliveira. Aula 06 - Tipos Primitivos de Dados

Transcrição:

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 Universidade Federal de Goiás Aula 5 25 de maio de 2012 1/23

Bancos de Dados com Java Nesta aula finalizaremos a montagem do aplicativo visual com acesso a banco de dados. 2/23

Tabela - Exemplo I Tabela: cliente matricula nome idade sexo integer varchar(50) integer char(1) 3/23

Problema - Exemplo I 4/23

Pesquisando os clientes I Existem várias abordagens para se efetuar a consulta dos clientes. 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 foco do campo matrícula 5/23

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. 6/23

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); 3 pesquisar.setbounds(210, 30, 110, 20); 7/23

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"); 4 } 8/23

Criando um botão para pesquisa III Criando o método de pesquisa 1 private boolean pesquisardados(){ 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"); 24 nome.requestfocus(); 25 26 rs.close(); 9/23

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 } 10/23

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 } 5 }); 11/23

Pesquisando quando a caixa de texto perde o foco II Método matriculafocuslost 1 private void matriculafocuslost(focusevent evt){ 2 pesquisardados(); 3 } 12/23

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 pequenas. Se sua função está grande, provavelmente ela faz mais de uma coisa. 13/23

Dividindo as funções I Evento e função para excluir 1 private void excluiractionperformed(actionevent evt){ 2 excluircliente(); 3 } 14/23

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 } 15/23

Dividindo as funções III Evento e função para salvar 1 private void salvaractionperformed(actionevent evt){ 2 inserircliente(); 3 } 16/23

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."); 16 }} 17/23

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. 18/23

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 Isto pode ser feito com uma variável do tipo boolean 19/23

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. 20/23

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 registro."); 16 }} 21/23

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(); 6 } 22/23

Implementando a função de alteração III É importante lembrar que se a variável numeromatricula é utilizada 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. 23/23