apostila_de_java_avançado

Upload: sjsilva

Post on 18-Jul-2015

82 views

Category:

Documents


0 download

TRANSCRIPT

1

ndice1 - Programao Visual Swing.........................................................................................................................2 1.1) Introduo.................................................................................................................................................2 1.2) Componentes do Swing............................................................................................................................3 1.3) Execute 1: Documentao do Swing.........................................................................................................5 1.4) Criando uma interface...............................................................................................................................5 1.5) Desenvolvendo uma estrutura ..................................................................................................................6 1.6) Execute 2 Desenvolvendo uma estrutura..................................................................................................6 1.7) Criando Botes..........................................................................................................................................7 1.8) Execute 3: Criando botes.........................................................................................................................7 1.9) Criando Rtulos.........................................................................................................................................8 1.10) Execute 4: Criando Rtulos.....................................................................................................................8 1.11) Criando Campos de Texto.......................................................................................................................9 1.12) Execute 5: Criando campos de texto.....................................................................................................10 1.13) Criando reas de texto..........................................................................................................................11 1.14) Execute 6: Criando reas de Texto.......................................................................................................11 1.15) Criando Painis deslizantes...................................................................................................................13 1.16) Execute 7: Criando painis deslizantes................................................................................................14 1.17) Criando Barras de rolagem....................................................................................................................15 1.18) Execute 8: Criando Barras de Rolagem................................................................................................15 1.19) Criando Caixas de verificao...............................................................................................................16 1.20) Execute 9: Criando caixa de verificao...............................................................................................17 1.21) Criando botes de rdio.........................................................................................................................18 1.22) Execute 10: Criando botes de escolha.................................................................................................18 1.23) Listas suspensas e caixas de combinao..............................................................................................19 1.24) Execute 11: Criando listas suspensas....................................................................................................20 1.25) Caixas de Dilogo de confirmao........................................................................................................21 1.26) Execute 12: Caixa de dilogo de confirmao......................................................................................21 1.27) Caixas de dilogo de entrada.................................................................................................................22 1.28) Execute 13: Caixa de dilogo de entrada..............................................................................................22 1.29) Caixas de dilogo de mensagem...........................................................................................................22 1.30) Execute 14: Caixa de dilogo de mensagem.........................................................................................23 1.31) Caixas de dilogo de opo...................................................................................................................23 1.32) Execute 15: Caixa de dilogo de opo.................................................................................................24 1.33) Controles deslizantes.............................................................................................................................25 1.34) Execute 16: Controles deslizantes.........................................................................................................25 2 - Organizando componentes em uma interface com o usurio.......................................................................27 2.1) Layout de Fluxo......................................................................................................................................27 2.2) Execute 17: Gerenciador FlowLayout.....................................................................................................27 2.3) Layout de grade.......................................................................................................................................28 2.4) Execute 18: Gerenciador GridLayout......................................................................................................28 2.5) Layout de Borda......................................................................................................................................29 2.6) Execute 19: Gerenciador BorderLayout..................................................................................................30 3 - Respondendo entrada do usurio...............................................................................................................31 3.1) Receptores de evento..............................................................................................................................31 3.2) Configurando componentes.....................................................................................................................32 3.3) Evento de Ao.......................................................................................................................................33 3.4) Execute 20: Evento de Ao...................................................................................................................33 3.5) Eventos de foco.......................................................................................................................................35 3.6) Execute 21: Evento de foco.....................................................................................................................35 3.7) Eventos de tecla.......................................................................................................................................36 SCRS 504 Bl. B Ent. 53 1 Andar CEP - 70331-550 Tel.: (61) 3225-7784 Braslia - DF

2

3.8) Execute 22: Evento de tecla....................................................................................................................36 3.9) Eventos de mouse....................................................................................................................................38 3.10) Execute 23: Evento de mouse...............................................................................................................38 3.11) Eventos de movimento de mouse..........................................................................................................40 3.12) Execute 24: Evento de Movimento do Mouse......................................................................................40 3.13) Eventos de janela...................................................................................................................................41 3.14) Execute 25: Evento de Janela................................................................................................................41 3.15) Criando Menus......................................................................................................................................43 3.16) Execute 26: Criando Menus..................................................................................................................43 3.17) Criando Barra de Ferramentas ...............................................................................................................46 3.18) Execute 27: Criando barra de ferramentas ............................................................................................46 3.19) Exerccios de Reviso do capitulo I......................................................................................................48 4 - Aplicaes e Primitiva Grficas...................................................................................................................51 4.1) Linhas.....................................................................................................................................................51 4.2) Execute 28:Criando Linhas.....................................................................................................................51 4.3) Retngulos e Quadrados..........................................................................................................................52 4.4) Execute 29:Criando Retngulos e Quadrados.........................................................................................52 4.5) Elipses e Circunferncias.......................................................................................................................53 4.6) Execute 30: Criando Elipse e Circunferncias ........................................................................................53 4.7) Polgonos................................................................................................................................................54 4.8) Execute 31: Criando Elipse e Circunferncias ........................................................................................55 4.9) Melhorando as Aplicaes usando primitivas grficas..........................................................................56 4.10) Execute 32Criando Linhas e Elipse......................................................................................................56 4.11) Execute 33Criando Retngulos com grficos.......................................................................................57 4.12) Execute 34Criando Retngulos com grficos.......................................................................................58 5 - Threads.........................................................................................................................................................60 5.1) O que so threads? .................................................................................................................................60 5.2) Os estados de uma thread.......................................................................................................................61 5.3) Threads em Applets................................................................................................................................63 5.4) Herdando de Thread x Implementando Runnable...................................................................................64 5.5) Execute 35: Trabalhando com Thread.....................................................................................................64 5.6) Execute 36:Trabalhando com Thread......................................................................................................66 5.7) Execute 37: Trabalhando com Thread.....................................................................................................68 5.8) Execute 38: Trabalhando com Thread.....................................................................................................69 5.9) Execute 39Trabalhando com Thread.......................................................................................................71 6 - Acessando Banco de Dados.........................................................................................................................74 6.1) Acessando bancos de dados em JDBC ..................................................................................................75 6.2) Execute 40- Trabalhando com Banco de Dados.....................................................................................77 6.3) Execute 41- Trabalhando com Banco de Dados.....................................................................................80 6.4) Execute 42: Trabalhando com Banco de Dados......................................................................................85 7 - JSP (Java Server Page).................................................................................................................................97 7.1) O que JSP?............................................................................................................................................97

1 - Programao Visual Swing1.1) IntroduoO Swing um biblioteca de classes para a construo de interface grfica baseada em componentes leves.SCRS 504 Bl. B Ent. 53 1 Andar CEP - 70331-550 Tel.: (61) 3225-7784 Braslia - DF

3

O Swing, que faz parte da biblioteca Java Foundation Classes, oferece uma maneira de fornecer uma interface grfica com o usurio em seus programas Java e de receber entradas do usurio com o teclado, o mouse ou outros dispositivos de entrada. De acordo com a Sun o nome correto JFC Project Swing padro na plataforma Java 2 (1.2). A biblioteca Swing uma extenso do Abstract Windowing Toolkit (awt), o pacote que oferecia suporte limitado para programao grfica na linguagem Java 1.0. O Swing oferece uma funcionalidade bastante aprimorada em relao ao seu antecessor: novos componentes, recursos de componente expandidos, melhor tratamento de eventos, aparncia e comportamento selecionveis. Vantagens do Swing: Swing tem um rico conjunto de componentes (muito mais que a AWT); Swing depende muito menos da plataforma nativa; Swing mantm o mesmo padro entre vrias plataformas. Desvantagem do Swing: Compatibilidade: requer Java 1.2 ou superior; Desempenho: componentes so desenhados em Java.

1.2) Componentes do SwingOs componentes podem ser divididos da seguinte forma: Componentes Superiores: JFrame: janelas que possuem uma barra de ttulo, botes de maximizao e fechamento. JDialog: janelas usadas para fornecer dilogos com os usurios; JApplet: aplicaes que sero mostradas em um browser; Componentes Intermedirios: JPanel: painis que podem ser adicionados em janelas para facilitar a disposio dos componentes de uma interface. JScrollPane: painis que podem ser adicionados em janelas e que possuem barras de rolagens. JToolBar: barras de ferramentas que podem ser adicionadas em janelas. JInternalFrame: frames que podem ser adicionados internamentes a outros frames.

Componentes Internos: JLabel: componente usado para mostrar rtulos (textos) ou elementos grficos que fornecem informaes; JButton: regies clicveis com texto ou elementos grficos que indicam seu objetivo; JTextField: campo de textos que recebem entradas do teclado e permitem que o texto seja editado; JComboBox: grupos de itens relacionados que podem ser selecionados a partir de menus suspensos; JRadioButton: botes de escolha em crculos que podem ser marcados ou desmarcados. JCheckBox: caixas de verificao que podem ser marcadas ou desmarcadas. JButtonGroup: agrupar componentes de caixa de verificao e botes de escolha;SCRS 504 Bl. B Ent. 53 1 Andar CEP - 70331-550 Tel.: (61) 3225-7784 Braslia - DF

4

JList: grupos de itens relacionados que podem ser selecionados a partir de janelas rolantes; JTextArea: reas de texto que recebem entradas do teclado e permitem que o texto seja editado; JSlider: controles deslizantes horizontais; JProgressBar: barras de progresso; JMenuBar: barras de menus; JMenu; componentes para inserir menus em um barra de menu; JMenuITem: componentes para inserir itens de menus em um menu.

SCRS 504 Bl. B Ent. 53 1 Andar CEP - 70331-550

Tel.: (61) 3225-7784 Braslia - DF

5

1.3) Execute 1: Documentao do Swing1) Abra o meu computador 2) Duplo clique no Disco local C: 3) Duplo clique na pasta do SDK do java: j2sdk1.4.2_04 4) Duplo clique na pasta docs 5) Duplo clique no arquivo index.html 6) Clique no link API & Language, clique no link Java 2 Platform API Specification 7) A seguinte tela mostrada:

8) Clique no link do pacote Swing: javax.swing 9) Veja os componentes do swing.

1.4) Criando uma interfaceO primeiro passo na criao de um aplicativo Swing gerar uma classe que represente a interface com o usurio. Um objeto dessa classe servir como continer, o componente que contm todos os outros componentes que sero apresentados. Em muitos projetos, o principal objeto da interface ser uma janela simples (Jwindow) ou uma janela mais especializada chamada de quadro (JFrame).SCRS 504 Bl. B Ent. 53 1 Andar CEP - 70331-550 Tel.: (61) 3225-7784 Braslia - DF

6

Uma janela um continer que pode ser apresentado na rea de trabalho do usurio.

1.5) Desenvolvendo uma estruturaUma maneira de criar um aplicativo grfico Swing tornar a interface uma sub-classe de JFrame.

1.6) Execute 2 Desenvolvendo uma estrutura1) Abra o Jcreator; 2) Digite o seguinte cdigo: // ExemploFrame.java import javax.swing.*; public class ExemploFrame extends JFrame { // sub-classe JFrame // construtor public ExemploFrame(){ super("Exemplo de Frame"); // construir uma janela com o ttulo setSize(300,100); // uma janela com 300 x 100 setDefaultCloseOperation(EXIT_ON_CLOSE); // mtodo para fechar janela setVisible(true); // mtodo para tornar a janela visvel } public static void main (String[] a){ ExemploFrame e = new ExemploFrame(); } } 3) Quando voc compilar e executar o aplicativo, dever ver a janela ilustrada a seguir:

SCRS 504 Bl. B Ent. 53 1 Andar CEP - 70331-550

Tel.: (61) 3225-7784 Braslia - DF

7

Todo quadro tem botes de maximizao, minimizao e fechamento na barra de ttulo sob controle do usurio (os mesmos controles presentes na interface de outros programas de software que estejam em execuo em seu sistema). Na linguagem Java, o comportamento normal quando um quadro fechado continuar a execuo do aplicativo. Para mudar isso, voc deve chamar o mtodo setDefaultCloseOperation() do quadro com uma das quatro variveis de classe JFrame como argumento: EXIT_ON_CLOSE: Sai do programa quando o quadro fechado. DISPOSE_ON_CLOSE: fecha o quadro, desfaz-se do objeto quadro e continua executando o aplicativo. DO_NOTHING_ON_CLOSE: mantm o quadro aberto e contnua executando. HIDE_ON_CLOSE: fecha o quadro e continua executando.

1.7) Criando BotesUm boto do Swing pode apresentar um rtulo de texto, um cone grfico ou uma combinao de ambos. Os mtodos construtores que voc pode usar incluem: JButton(String): cria um boto rotulado com o texto especificado. JButton(Icon): cria um boto que apresenta o cone especificado. JButton(String,Icon): cria um boto com o texto e o cone especificados.

1.8) Execute 3: Criando botes1) Abra o Jcreator 2) Digite o cdigo abaixo: // ExemploBotao.java import javax.swing.*; public class ExemploBotao extends JFrame { // atributos private JButton rotulo = new JButton("Botes Rtulados"); private JButton rotuloicone = new JButton("Botes Rtulados e cones",new ImageIcon("logo.gif")); private JButton icone = new JButton(new ImageIcon("logo.gif")); private JPanel painel = new JPanel(); // construtor public ExemploBotao(){ super("Exemplo Boto"); setSize(200,130); setDefaultCloseOperation(EXIT_ON_CLOSE); // adicionar os botes no painel painel.add(rotulo);SCRS 504 Bl. B Ent. 53 1 Andar CEP - 70331-550 Tel.: (61) 3225-7784 Braslia - DF

8

painel.add(rotuloicone); painel.add(icone); setContentPane(painel); show(); } public static void main(String[] argumentos){ ExemploBotao b = new ExemploBotao(); } } 3) Quando voc compilar e executar o aplicativo, dever ver a janela ilustrada a seguir:

1.9) Criando RtulosUm rtulo um componente de usurio que contm texto informativos, um cone ou ambos. Criado a partir da classe JLabel, um rtulo usado muitas vezes para identificar o objetivos de outros componentes em uma interface. O rtulo no pode ser editado diretamente por um usurio. Para criar um rtulo, voc pode usar os seguintes construtores: JLabel (String): um rtulo com o texto especificado. JLabel (String, Int): um rtulo com o texto e o alinhamento especificados JLabel (String, Icon, Int): um rtulo com o texto, o cone e o alinhamento especificados O alinhamento de um rtulo determina como seu texto ou cone esta alinhado em relao rea ocupada na janela. Trs alinhamentos podem ser usados: LEFT, CENTER ou RIGHT. Caso no seja especificado o alinhamento o padro CENTER.

1.10) Execute 4: Criando Rtulos1) Abra o Jcreator 2) Digite o cdigo abaixo: // ExemploRotulo.java import javax.swing.*; public class ExemploRotulo extends JFrame {SCRS 504 Bl. B Ent. 53 1 Andar CEP - 70331-550 Tel.: (61) 3225-7784 Braslia - DF

9

// atributos private JLabel texto ");

= new JLabel("Rtulo com texto alinhamento centralizado

private JLabel textoalinhar = new JLabel("Rtulo com texto alinhado a esquerda",JLabel.LEFT); private JLabel textoicone = new JLabel("Rtulo com texto, cone alinhado a direita",new ImageIcon("logo.gif"),JLabel.RIGHT); private JPanel painel = new JPanel(); // construtor public ExemploRotulo(){ super("Exemplo Rtulos"); setSize(350,150); setDefaultCloseOperation(EXIT_ON_CLOSE); // adicionando os rtulos no painel painel.add(texto); painel.add(textoalinhar); painel.add(textoicone); setContentPane(painel); show(); } public static void main(String[] argumentos){ ExemploRotulo r= new ExemploRotulo(); } } 3) Quando voc compilar e executar o aplicativo, dever ver a janela ilustrada a seguir:

1.11) Criando Campos de TextoUm campo de texto uma rea em uma interface onde um usurio pode introduzir e modificar texto com um teclado. Ele, que representado pela classe JTextField, pode manipular uma linha de entrada.SCRS 504 Bl. B Ent. 53 1 Andar CEP - 70331-550 Tel.: (61) 3225-7784 Braslia - DF

10

Os mtodos construtores incluem o seguinte: JTextField(): um campo de texto vazio JTextField(int): um campo de texto com largura especificada JTextField(String, int): um campo de texto com o texto e a largura especificados

1.12) Execute 5: Criando campos de texto1) Abra o jcreator 2) Digite o cdigo: // ExemploCampoTexto.java import javax.swing.*; public class ExemploCampoTexto extends JFrame { // atributos private JTextField vazio = new JTextField(); private JTextField largura = new JTextField(30); private JTextField textolargura = new JTextField("Hytec Informtica",25); private JPanel painel = new JPanel(); // construtor public ExemploCampoTexto(){ super("Exemplo Campo Texto"); setSize(350,150); setDefaultCloseOperation(EXIT_ON_CLOSE); // adicionando os campos de texto no painel painel.add(vazio); painel.add(largura); painel.add(textolargura); setContentPane(painel); show(); } public static void main(String[] argumentos){ ExemploCampoTexto t= new ExemploCampoTexto(); } } 3) Quando voc compilar e executar o aplicativo, dever ver a janela ilustrada a seguir:

SCRS 504 Bl. B Ent. 53 1 Andar CEP - 70331-550

Tel.: (61) 3225-7784 Braslia - DF

11

1.13) Criando reas de textoAs reas de texto, campos de texto editvel que manipulam mais de uma linha de entrada, so implementados com a classe JTextArea. Essa classe inclui os seguintes mtodos construtores: JTextArea(int, int): uma rea de texto com o nmero especificado de linhas e colunas JTextArea(String, int, int): uma rea de texto com o texto, as linhas e as colunas especificados

1.14) Execute 6: Criando reas de Texto1) Abra o Jcreator 2) Digite o cdigo: // ExemploAreaTexto.java import javax.swing.*; public class ExemploAreaTexto extends JFrame { // atributos private JTextArea lincol = new JTextArea(5,30); private JTextArea textolincol = new JTextArea("Digite o texto aqui",12,40); private JPanel painel = new JPanel(); // construtor public ExemploAreaTexto(){ super("Exemplo Area de Texto"); setSize(450,350); setDefaultCloseOperation(EXIT_ON_CLOSE); // adicionando area de texto no painel painel.add(lincol); painel.add(textolincol); setContentPane(painel); show(); }SCRS 504 Bl. B Ent. 53 1 Andar CEP - 70331-550 Tel.: (61) 3225-7784 Braslia - DF

12

public static void main(String[] argumentos){ ExemploAreaTexto a= new ExemploAreaTexto(); } }

SCRS 504 Bl. B Ent. 53 1 Andar CEP - 70331-550

Tel.: (61) 3225-7784 Braslia - DF

13

3) Quando voc compilar e executar o aplicativo, dever ver a janela ilustrada a seguir:

1.15) Criando Painis deslizantesAs reas de texto no Swing no incluem barras de rolagem horizontal ou vertical e no existem maneiras de inclu-las usando o componente sozinho. Essa uma diferena entre as reas de texto do Swing e suas equivalentes no AWT. O motivo da mudana que Swing introduz um novo continer que pode ser usado para conter qualquer componente que possa se rolado: JScrollPane. Um painel deslizante associado a um componente no mtodo construtor do painel. Voc pode usar o seguinte: JScrollPane(Component): um painel deslizante que contm o componente especificado JScrollPane(Component, int, int): um painel deslizante com o componente, a configurao da barra de rolagem vertical e a configurao da barra de rolagem horizontal especificados As barras de rolagens so configuradas usando: VERTICAL_SCROLLBAR_ALWAYS ou HORIZONTAL_SCROLLBAR_ALWAYS: sempre colocar a barra de rolagem VERTICAL_SCROLLBAR_AS_NEED ou HORIZONTAL_SCROLLBAR_AS_NEED: colocar quando for necessrio a utilizao das barras na janela VERTICAL_SCROLLBAR_NEVER ou HORIZONTAL_SCROLLBAR_NEVER: no colocar a barra de rolagemSCRS 504 Bl. B Ent. 53 1 Andar CEP - 70331-550 Tel.: (61) 3225-7784 Braslia - DF

14

1.16) Execute 7: Criando painis deslizantes1) Abra o Jcreator 2) Digite o cdigo abaixo: //ExemploPaineisdes.java import javax.swing.*; public class ExemploPaineisdes extends JFrame { JPanel pane = new JPanel(); JTextArea letras = new JTextArea(5,15); JScrollPane rolar = new JScrollPane(letras,JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,JScrollPane.HORIZO NTAL_SCROLLBAR_NEVER); public ExemploPaineisdes(){ super("Exemplo de Paineis Deslizantes"); setSize(300,300); pane.add(rolar); setContentPane(pane); setDefaultCloseOperation(EXIT_ON_CLOSE); show(); } public static void main(String a[]){ ExemploPaineisdes p = new ExemploPaineisdes(); } }

SCRS 504 Bl. B Ent. 53 1 Andar CEP - 70331-550

Tel.: (61) 3225-7784 Braslia - DF

15

3) Quando voc compilar e executar o aplicativo, dever ver a janela ilustrada a seguir:

1.17) Criando Barras de rolagemAs barras de rolagem so componentes que permitem selecionar um valor atravs da movimentao de um elevador entre duas setas. Vrios componentes tem funcionalidade de barra de rolagem interna, incluindo reas de texto e listas rolantes. Normalmente, as barras de rolagem so criadas especificando os valores mnimos e mximo que podem ser configurados com o componente. Voc pode usar os seguintes mtodos contrutores: JScrollBar(int): uma barra de rolagem com a orientao especificada JScrollBar(int, int, int, int, int): uma barra de rolagem com a orientao, o valor inicia, o tamanho do elevador, o valor mnimo e o valor mximo especificados. A orientao indicada pelas variveis de classe JScrollBar, HORIZONTAL e VERTICAL.

1.18) Execute 8: Criando Barras de Rolagem1) Abra o Jcreator 2) Digite o cdigo: //ExemploBarraRola.java import javax.swing.*; public class ExemploBarraRola extends JFrame { JScrollBar bvertical = new JScrollBar(JScrollBar.VERTICAL);SCRS 504 Bl. B Ent. 53 1 Andar CEP - 70331-550 Tel.: (61) 3225-7784 Braslia - DF

16

JScrollBar bhorizontal = new JScrollBar(JScrollBar.HORIZONTAL); JScrollBar barrarola = new JScrollBar(JScrollBar.HORIZONTAL,33,0,10,50); JPanel painel = new JPanel(); public ExemploBarraRola(){ super("Exemplo de Barra de Rolagem"); setSize(400,200); setDefaultCloseOperation(EXIT_ON_CLOSE); painel.add(bvertical); painel.add(bhorizontal); painel.add(barrarola); setContentPane(painel); show(); } public static void main(String a[]){ ExemploBarraRola r = new ExemploBarraRola(); } } 3) Quando voc compilar e executar o aplicativo, dever ver a janela ilustrada a seguir:

1.19) Criando Caixas de verificaoA caixas de verificao componente que tem apenas dois valores possveis: selecionado ou no selecionado. Pode ser agrupado de modo que apenas um componente em um grupo possa ser selecionado por vez. As caixas de verificao (a classe JCheckBox) so caixas rotuladas, ou no, que contm uma marca de seleo quando esto selecionadas e nada no caso contrrio. Este componente costuma ser usado para fazer uma escolha simples do tipo sim-no ou ligado-desligado em um programa. A classe JChecBox, inclui os seguintes mtodos construtores: JCheckBox(String): uma caixa de verificao com o rtulo de texto especificadoSCRS 504 Bl. B Ent. 53 1 Andar CEP - 70331-550 Tel.: (61) 3225-7784 Braslia - DF

17

JCheckBox(String,boolean): uma caixa de verificao com o rtulo de texto especificado que selecionada se o segundo argumento for true JCheckBox(Icon): uma caixa de verificao com rtulo de cone especificado JCheckBox(Icon,boolean): uma caixa de verificao com o rtulo de cone especificado que selecionada se o segundo argumento for true

1.20) Execute 9: Criando caixa de verificao1) Abra o Jcreator 2) Digite o cdigo: // ExemploCheckBox.java import javax.swing.*; public class ExemploCheckBox extends JFrame { JCheckBox[] ensino = new JCheckBox[4]; JLabel lensino = new JLabel("Ensino: "); public ExemploCheckBox(){ super("Exemplo de Caixa de Verificao"); setSize(400,100); setDefaultCloseOperation(EXIT_ON_CLOSE); ensino[0] = new JCheckBox("Fundamental",true); ensino[1] = new JCheckBox("Mdio",false); ensino[2] = new JCheckBox("Superior",false); ensino[3] = new JCheckBox("Tcnico",false); JPanel painel = new JPanel(); painel.add(lensino); for (int i=0;i 2) showpic = 0; } } public void blink(int numtimes) { for (int i = numtimes; i > 0; i--) { current = 4; repaint(); pause(200); current = 3; repaint(); pause(1000); } } public void wave(int numtimes) { for (int i = numtimes; i > 0; i--) { current = 3; repaint(); pause(600); current = 5; repaint(); pause(1100); } } public void look() { current = 3; repaint(); pause(1000); } public void pause(int time) { try { Thread.sleep(time);SCRS 504 Bl. B Ent. 53 1 Andar CEP - 70331-550 Tel.: (61) 3225-7784 Braslia - DF

74

} catch (InterruptedException e) { } } } 3) Compilar e executar. 4) Ser mostrada a seguinte tela:

6 - Acessando Banco de DadosUma funcionalidade essencial em qualquer sistema a habilidade para comunicar-se com um banco de dados. Java dispe de uma API para acessar banco de dados: a Java DataBase Connectivity API ou JDBC API. A JDBC implementa em Java a funcionalidade definida pelo padro SQL Call Level Interface ou SQLCLI. Um outro exemplo de API que implementa o SQL Call Level Interface o popularssimo ODBC das plataformas Wintel. A maioria dos fornecedores de bancos de dados oferece uma implementao particular de SQLCLI. A vantagem de JDBC a portabilidade da aplicao cliente, inerente da linguagem Java. A especificao corrente da JDBC API a 2.1. A JDBC compreende uma especificao para ambos: os desenvolvedores de drivers JDBC e os desenvolvedores de aplicaes clientes que precisem acessar bancos de dados em Java. Estaremos dando uma olhada no desenvolvimento de aplicaes em Java, ento, uma boa idia comear com o suporte de dados. Existem 4 tipos de diferentes de drivers JDBC: - Uma vez que ODBC uma especificao padro do mundo Wintel, o tipo 1 um driver de ponte entre Java e ODBC. O driver de ponte mais conhecido o fornecido pela Sun o JDBC-ODBC bridge. Este tipo de driver no portvel, pois depende de chamadas a funes de ODBC implementadas em linguagem C e compiladas para Wintel, ou outra plataforma ODBC compatvel, as chamadas funes nativas. - O driver tipo 2 implementado parcialmente em Java e parcialmente atravs de funes nativas que implementam alguma API especfica do fornecedor de banco de dados. Este tipo faz o que se chama de wrap-out, ou seja, prov uma interface Java para uma API nativa no-Java.SCRS 504 Bl. B Ent. 53 1 Andar CEP - 70331-550 Tel.: (61) 3225-7784 Braslia - DF

75

- O tipo 3 um driver totalmente Java que se comunica com algum tipo de middleware que ento se comunica com o banco de dados - O tipo 4 um driver totalmente Java que vai diretamente ao banco de dados.

6.1) Acessando bancos de dados em JDBCCdigo:

import java.sql.*; A primeira coisa a fazer estabelecer uma conexo com o banco de dados. Fazemos isso em dois passos: primeiro carregamos o driver para o banco de dados na JVM da aplicao. Uma vez carregado, o driver se registra para o DriverManager e est disponvel para a aplicao. Utilizamos ento a classe DriverManager para abrir uma conexo com o banco de dados. A interface Connection designa um objeto, no caso con, para receber a conexo estabelecida:Cdigo: try //A captura de excees SQLException em Java obrigatria para usarmos JDBC. { // Este um dos meios para registrar um driver Class.forName("sun.jdbc.odbc.JdbcOdbcDriver") // Registrado o driver, vamos estabelecer uma conexo Connection con = DriverManager.getConnection("jdbc:odbc:meusCdsDb","conta","senha"); } catch(SQLException e) { // se houve algum erro, uma exceo gerada para informar o erro e.printStackTrace(); //vejamos que erro foi gerado e quem o gerou }

Estabelecida a conexo, podemos executar comandos SQL para o banco de dados. Vejamos como realizar uma consulta sobre o ttulo, numero de faixas e o artista de cada CD no banco de dados. Podemos usar 3 interfaces para executar comandos SQL no banco de dados. A primeira delas a interface Statement, que permite a execuo dos comandos fundamentais de SQL (SELECT, INSERT, UPDATE ou DELETE). A interface PreparedStatement nos permite usufruir de SQL armazenado ou pr-compilado no banco, quando o banco de dados suportar este recurso. A terceira interface CallableStatement, e permite executar procedimentos e funes armazenados no banco quando o banco suportar este recurso. Vejamos como utilizar a interface Statement.Cdigo: // Aps estabelecermos a conexo com o banco de dados // Utilizamos o mtodo createStatement de con para criar o Statement Statement stm = con.createStatement(); // Vamos executar o seguinte comando SQL : String SQL = "Select titulo, autor, total_faixas from MeusCDs";

A interface ResultSet permite colher os resultados da execuo de nossa query no bancoSCRS 504 Bl. B Ent. 53 1 Andar CEP - 70331-550 Tel.: (61) 3225-7784 Braslia - DF

76

de dados. Esta interface apresenta uma srie de mtodos para prover o acesso aos dados:Cdigo: // Definido o Statement, executamos a query no banco de dados ResultSet rs = stm.executeQuery(SQL); // O mtodo next() informa se houve resultados e posiciona o cursor do banco // na prxima linha disponvel para recuperao // Como esperamos vrias linhas utilizamos um lao para recuperar os dados while(rs.next()) { // Os mtodos getXXX recuperam os dados de acordo com o tipo SQL do dado: String tit = rs.getString("titulo"); String aut = rs.getString("autor"); int totalFaixas = rs.getInt("total_faixas"); // As variveis tit, aut e totalFaixas contm os valores retornados // pela query. Vamos imprim-los System.out.println("Titulo: "+tit+" Autor: "+aut+" Tot. Faixas: "+totalFaixas); }

E nosso acesso est terminado. O importante agora liberar os recursos alocados pelo banco de dados para a execuo deste cdigo. Podemos fazer isso fechando o Statement, que libera os recursos associados execuo desta consulta mas deixa a conexo aberta para a execuo de uma prxima consulta, ou fechando diretamente a conexo, que encerra a comunicao com o banco de dados. Para termos certeza de que vamos encerrar esta conexo mesmo que uma exceo ocorra, reservamos o fechamento para a clusula finally() do tratamento de excees.

Cdigo: try { con.close(); } catch(SQLException onConClose) { System.out.println("Houve erro no fechamento da conexo"); onConClose.printStackTrace(); }

SCRS 504 Bl. B Ent. 53 1 Andar CEP - 70331-550

Tel.: (61) 3225-7784 Braslia - DF

77

6.2) Execute 40- Trabalhando com Banco de Dados1) Abra o JCreator 2) Digite o cdigo abaixo: // MeusCds.javaimport java.sql.*;public class MeusCds { Connection con; String SQL; Statement stm; public MeusCds(){ // 1 passo:estabelecer uma conexo com o JDBC try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } catch(ClassNotFoundException e) { System.out.println("JDBC erro"); } // 2 passo: estabelecer conexao com o banco de dados acess try { con = DriverManager.getConnection("jdbc:odbc:meusCdsDb"); } catch(SQLException e) { System.out.println("conexo erro"); } // 3 passo: executar comandos sql try { stm = con.createStatement(); SQL = "Select titulo, autor, total_faixas from MeusCDs"; } catch(SQLException e) { System.out.println("SQL erro"); } // 3 passo: colher os resultados da execuo de nossa consulta no banco try { ResultSet rs = stm.executeQuery(SQL); while(rs.next()) { String tit = rs.getString("titulo"); String aut = rs.getString("autor"); int totalFaixas = rs.getInt("total_faixas"); System.out.println(tit+" - "+aut+" - "+totalFaixas); } } catch(SQLException e) { System.out.println("consulta erro"); }

SCRS 504 Bl. B Ent. 53 1 Andar CEP - 70331-550

Tel.: (61) 3225-7784 Braslia - DF

78

// 4 passo: liberar os recursos alocados pelo banco de dados try { con.close(); } catch(SQLException onConClose) { System.out.println("Houve erro no fechamento da conexo"); } } // programa principal public static void main (String a[]){ MeusCds m = new MeusCds(); } }

3) Acessar o painel de controle do Windows, acessar o cone ferramentas administrativas, acessar o cone fonte de dados ODBC a seguinte janela ser apresentada:

Clique no boto adicionar

SCRS 504 Bl. B Ent. 53 1 Andar CEP - 70331-550

Tel.: (61) 3225-7784 Braslia - DF

79

4) Ao clicar no boto adicionar a seguinte tela ser exibida:

Clique em Microsoft Acess Driver.

Clique em concluir

5) Ao clicar na opo Microsoft Acess Driver e depois concluir ser exibida a seguinte tela:

Coloque a fonte de dados meusCdsDb

Selecionar o banco de dados bdcds.mdb que esta dentro da sua pasta de trabalho do curso.

6) Clicar no boto nos botes Ok at fechar as janelas, fechar o painel de controle.

SCRS 504 Bl. B Ent. 53 1 Andar CEP - 70331-550

Tel.: (61) 3225-7784 Braslia - DF

80

7) Volte ao seu cdigo fonte MeusCds.java que esta no JCreator. 8) Compilar e executar dever ser mostrado a seguinte informao: Diante do Trono I - Igreja Batista Lagoinha - 12 Diante do Trono II - Igrefa Batista Lagoinha - 14 Ao vivo - Carlinhos Felix - 16 Amor I - Varios autores 20 6.3) Execute 41- Trabalhando com Banco de Dados 1) Abrir no JCreator 2) Digite o cdigo abaixo: import javax.swing.*; import java.awt.event.*; import java.awt.*; public class ApClientes extends JFrame implements ActionListener{ JPanel pacima, pabaixo; JButton btadicionar, btlimpar; JLabel lbnome, lbendereco, lbcep, lbcidade,lbuf; JTextField txnome, txendereco, txcep, txcidade, txuf; public ApClientes(){ // Criando a janela e configurando super("Cadastro de Clientes"); setSize(500,150); setLocation(0,0); setDefaultCloseOperation(EXIT_ON_CLOSE); // criando paineis pacima = new JPanel(new GridLayout(3,4)); pabaixo = new JPanel(new GridLayout(1,2)); // criando botoes btadicionar = new JButton("Adicionar"); btadicionar.addActionListener(this); btlimpar = new JButton("Limpar"); btlimpar.addActionListener(this); // criando labels lbnome = new JLabel(" Nome"); lbendereco = new JLabel(" Endereo"); lbcep = new JLabel(" CEP"); lbcidade = new JLabel(" Cidade"); lbuf = new JLabel(" UF");SCRS 504 Bl. B Ent. 53 1 Andar CEP - 70331-550 Tel.: (61) 3225-7784 Braslia - DF

81

// criando caixa de texto txnome = new JTextField(30); txendereco = new JTextField(30); txcep = new JTextField(9); txcidade = new JTextField(20); txuf = new JTextField(2); // Adicionando os objetos getContentPane().add(pacima,BorderLayout.NORTH); getContentPane().add(pabaixo,BorderLayout.SOUTH); pacima.add(lbnome); pacima.add(txnome); pacima.add(lbendereco); pacima.add(txendereco); pacima.add(lbcep); pacima.add(txcep); pacima.add(lbcidade); pacima.add(txcidade); pacima.add(lbuf); pacima.add(txuf); pabaixo.add(btadicionar); pabaixo.add(btlimpar); show(); } public void actionPerformed(ActionEvent e){ if (e.getSource()==btadicionar){ ConectarBD bd = new ConectarBD("INSERT INTO Cliente(nome,endereco,cep,cidade,uf) values ('"+txnome.getText() +"','"+txendereco.getText()+"','"+txcep.getText()+"','"+txcidade.getText() +"','"+txuf.getText()+"')"); JOptionPane.showMessageDialog(null,"Gravao concluida!"); txnome.setText(""); txendereco.setText(""); txcep.setText(""); txcidade.setText(""); txuf.setText(""); } else if (e.getSource()==btlimpar){ txnome.setText(""); txendereco.setText("");SCRS 504 Bl. B Ent. 53 1 Andar CEP - 70331-550 Tel.: (61) 3225-7784 Braslia - DF

82

txcep.setText(""); txcidade.setText(""); txuf.setText(""); } } public static void main(String a[]){ ApClientes ap = new ApClientes(); } }3) Acessar o painel de controle do Windows, acessar o cone ferramentas administrativas, acessar o cone fonte de dados ODBC a seguinte janela ser apresentada:

Clique no boto adicionar

SCRS 504 Bl. B Ent. 53 1 Andar CEP - 70331-550

Tel.: (61) 3225-7784 Braslia - DF

83

4) Ao clicar no boto adicionar a seguinte tela ser exibida:

Clique em Microsoft Acess Driver.

Clique em concluir

5) Ao clicar na opo Microsoft Acess Driver e depois concluir ser exibida a seguinte tela: 6) Clicar no boto nos botes Ok at fechar as janelas, fechar o painel de controle.

Coloque a fonte de dados CADCLIENTE

Selecionar o banco de dados CR.mdb que esta dentro da sua pasta de trabalho do curso.

SCRS 504 Bl. B Ent. 53 1 Andar CEP - 70331-550

Tel.: (61) 3225-7784 Braslia - DF

84

7) No JCretor, digite o seguinte cdigo para a conexo com o banco de dados: //ConectarBD.javaimport java.sql.*; import java.io.*; public class ConectarBD { // string carregar o bd String dbcarregar = "sun.jdbc.odbc.JdbcOdbcDriver"; // string conectar o bd String dbconexao = "jdbc:odbc:CADCLIENTE"; // varivel para refenciar sql Statement lesql; // varivel usada para faze a conexao BD Connection conexao; public ConectarBD(String comando){ try{ // carregar o driver Class.forName(dbcarregar); } catch(ClassNotFoundException e){ System.out.println("No foi possvel carregar o driver"); } try { // conectar o driver conexao = DriverManager.getConnection(dbconexao); // criar ligacao sql com a conexo lesql = conexao.createStatement(); lesql.executeUpdate(comando); lesql.close(); conexao.close(); } catch (SQLException e){ System.out.println("No foi possvel conectar ao BD"); }

} }

8) Salvar e compilar 9) Acesse o arquivo ApClientes.java 10) Compilar e exceutar 11) Cadastre alguns clientes. 12) Acesse o banco de dados CR.mdb que esta dentro da sua pasta 13) Abra a tabela cliente e veja se os nomes foram cadastrados.

SCRS 504 Bl. B Ent. 53 1 Andar CEP - 70331-550

Tel.: (61) 3225-7784 Braslia - DF

85

6.4) Execute 42: Trabalhando com Banco de Dados1) Abrir o JCreator 2) Digite o cdigo abaixo: // Clientes.java // Inserindo, atualizando e pesquisando dados em um banco de dados import java.sql.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.ScrollPaneLayout; public class Clientes extends JFrame { private BotoesPainel controls; private RotuloClientes scrollArea; private JTextArea output; private String url; private Connection connect; private JScrollPane textpane; public Clientes() { super( "Aplicao de Banco de Dados de Agenda de Endereos" ); setDefaultCloseOperation(EXIT_ON_CLOSE); Container c = getContentPane(); // Inicia o layout da tela scrollArea = new RotuloClientes(); c.setLayout( new BorderLayout() ); c.add( new JScrollPane( scrollArea ),BorderLayout.CENTER ); // Configura a conexo de banco de dados try { url = "jdbc:odbc:AddressBook"; Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" ); connect = DriverManager.getConnection( url ); } catch ( ClassNotFoundException cnfex ) { // processa ClassNotFoundExceptions aqui JOptionPane.showMessageDialog(null, "A conexo falhou!\n" + cnfex.toString(), "Aviso",JOptionPane.WARNING_MESSAGE ); } catch ( SQLException sqlex ) { // processa SQLExceptions aqui JOptionPane.showMessageDialog(null, "A conexo falhou!\n", "Aviso",JOptionPane.WARNING_MESSAGE ); } catch ( Exception ex ) { // processa Exceptions remanescentes aqui JOptionPane.showMessageDialog(null, ex.toString(), "Aviso",JOptionPane.WARNING_MESSAGE ); } SCRS 504 Bl. B Ent. 53 1 Andar CEP - 70331-550 Tel.: (61) 3225-7784 Braslia - DF

86

// Completa layout de tela controls = new BotoesPainel( connect, scrollArea, output); c.add( controls, BorderLayout.NORTH ); setSize( 500, 400 ); move(150, 150); show(); } public static void main( String args[] ){ Clientes app = new Clientes(); }

}

4) Salvar e compilar 5) Crie um novo arquivo e digite o cdigo abaixo: // RotuloClientes.java // Definio da classe RotuloClientes import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.ScrollPaneLayout; public class RotuloClientes extends JPanel { private JPanel labelPanel, fieldsPanel; private String labels[] = { "Cdigo:", "Nome:", "Sobrenome:", "Endereo:", "Cidade:", "Estado:", "CEP:", "Pais:", "E-mail:", "Telefone:", "Celular:" }; JTextField id, first, last, address, // accesso de pacote city, state, zip, country, email, home, fax; public RotuloClientes() { // Painel de Rtulo labelPanel = new JPanel(); labelPanel.setLayout(new GridLayout( labels.length, 1 ) ); for ( int i = 0; i < labels.length; i++ ) labelPanel.add( new JLabel( labels[ i ], 0) ); // Painel de TextField fieldsPanel = new JPanel(); fieldsPanel.setLayout(new GridLayout( labels.length, 1 ) ); id = new JTextField( 20 ); id.setEditable( false ); fieldsPanel.add( id ); first = new JTextField( 20 ); fieldsPanel.add( first ); last = new JTextField( 20 ); SCRS 504 Bl. B Ent. 53 1 Andar CEP - 70331-550 Tel.: (61) 3225-7784 Braslia - DF

87

fieldsPanel.add( last ); address = new JTextField( 20 ); fieldsPanel.add( address ); city = new JTextField( 20 ); fieldsPanel.add( city ); state = new JTextField( 20 ); fieldsPanel.add( state ); zip = new JTextField( 20 ); fieldsPanel.add( zip ); country = new JTextField( 20 ); fieldsPanel.add( country ); email = new JTextField( 20 ); fieldsPanel.add( email ); home = new JTextField( 20 ); fieldsPanel.add( home ); fax = new JTextField( 20 ); fieldsPanel.add( fax ); setLayout( new GridLayout( 1, 2 ) ); add( labelPanel ); add( fieldsPanel );

} }

6) Salvar e compilar 7) Cire um novo arquivo e digite o cdigo abaixo: // BotoesPainel.java // Definio da classe BotoesPainel import java.awt.*; import java.awt.event.*; import java.sql.*; import javax.swing.*; import javax.swing.ScrollPaneLayout; public class BotoesPainel extends JPanel { private JButton findName, addName, updateName, deleteName, clear, help; public BotoesPainel( Connection c, RotuloClientes s, JTextArea t ) { setLayout( new GridLayout( 1, 6 ) ); Icon novo = new ImageIcon( "Imagens/Novo.gif" ); clear = new JButton( novo ); clear.addActionListener( new NovoClientes( s ) ); add( clear ); Icon gravar = new ImageIcon( "Imagens/Gravar.gif" ); addName = new JButton( gravar ); addName.addActionListener( new SalvarClientes( c, s, t ) ); add( addName ); SCRS 504 Bl. B Ent. 53 1 Andar CEP - 70331-550 Tel.: (61) 3225-7784 Braslia - DF

88

Icon editar = new ImageIcon( "Imagens/Editar.gif" ); updateName = new JButton( editar ); updateName.addActionListener( new EditarClientes( c, s, t ) ); add( updateName ); Icon excluir = new ImageIcon( "Imagens/Excluir.gif" ); deleteName = new JButton( excluir ); deleteName.addActionListener( new ExcluirClientes( c, s, t ) ); add( deleteName ); Icon localizar = new ImageIcon( "Imagens/Localizar.gif" ); findName = new JButton( localizar ); findName.addActionListener( new PesquisarClientes( c, s, t ) ); add( findName ); Icon ajuda = new ImageIcon( "Imagens/Ajuda.gif" ); help = new JButton( ajuda ); help.addActionListener( new Ajuda( t ) ); add( help );

} }

8) Crie um novo arquivo e digite o cdigo abaixo: // NovoClientes.java // Definio da classe NovoClientes import java.awt.*; import java.awt.event.*; import javax.swing.ScrollPaneLayout; public class NovoClientes implements ActionListener { private RotuloClientes fields; public NovoClientes( RotuloClientes f ) { fields = f; } //Limpa os campos public void actionPerformed( ActionEvent e ) { fields.id.setText( "" ); fields.first.setText( "" ); fields.last.setText( "" ); fields.address.setText( "" ); fields.city.setText( "" ); fields.state.setText( "" ); fields.zip.setText( "" ); fields.country.setText( "" ); fields.email.setText( "" ); fields.home.setText( "" ); fields.fax.setText( "" ); } Tel.: (61) 3225-7784 Braslia - DF

}

SCRS 504 Bl. B Ent. 53 1 Andar CEP - 70331-550

89

9) Salvar e compilar 10) Crie um novo arquivo e digite o cdigo abaixo: // EditarClientes.java // Definio da classe EditarClientes import java.awt.*; import java.awt.event.*; import java.sql.*; import javax.swing.*; import javax.swing.ScrollPaneLayout; public class EditarClientes implements ActionListener { private RotuloClientes fields; private JTextArea output; private Connection connection; public EditarClientes( Connection c, RotuloClientes f, JTextArea o ) { connection = c; fields = f; output = o; } public void actionPerformed( ActionEvent e ) { try { Statement statement = connection.createStatement(); if ( ! fields.id.getText().equals( "" ) ) { String query = "UPDATE addresses SET " + "firstname='" + fields.first.getText() + "', lastname='" + fields.last.getText() + "', address='" + fields.address.getText() + "', city='" + fields.city.getText() + "', stateorprovince='" + fields.state.getText() + "', postalcode='" + fields.zip.getText() + "', country='" + fields.country.getText() + "', emailaddress='" + fields.email.getText() + "', homephone='" + fields.home.getText() + "', faxnumber='" + fields.fax.getText() + "' WHERE id=" + fields.id.getText(); int result = statement.executeUpdate( query ); if ( result == 1 ) JOptionPane.showMessageDialog( null, "Registro alterado." , "Aviso", JOptionPane.PLAIN_MESSAGE ); else { SCRS 504 Bl. B Ent. 53 1 Andar CEP - 70331-550 Tel.: (61) 3225-7784 Braslia - DF

90

}

JOptionPane.showMessageDialog( null, "Falha na alterao!" , "Aviso", JOptionPane.WARNING_MESSAGE ); fields.first.setText( "" ); fields.last.setText( "" ); fields.address.setText( "" ); fields.city.setText( "" ); fields.state.setText( "" ); fields.zip.setText( "" ); fields.country.setText( "" ); fields.email.setText( "" ); fields.home.setText( "" ); fields.fax.setText( "" );

} catch ( SQLException sqlex ) { sqlex.printStackTrace(); JOptionPane.showMessageDialog( null, sqlex.toString(), "Aviso", JOptionPane.WARNING_MESSAGE ); } } }

statement.close(); } else JOptionPane.showMessageDialog( null, "\nUse Alterar somente quando\n " + "existim registros. Use Pesquisar para\n " + "localizar um registro, ento\n " + "modifique a informao e\n " + "pressione Alterar.\n" , "Aviso", JOptionPane.PLAIN_MESSAGE );

10) Salvar e compilar 11) Crie um novo arquivo e digite o cdigo: // SalvarClientes.java // Definio de classe SalvarClientes import java.awt.*; import java.awt.event.*; import java.sql.*; import javax.swing.*; import javax.swing.ScrollPaneLayout; public class SalvarClientes implements ActionListener { private RotuloClientes fields; private JTextArea output; private Connection connection; public SalvarClientes( Connection c, RotuloClientes f, JTextArea o ) { SCRS 504 Bl. B Ent. 53 1 Andar CEP - 70331-550 Tel.: (61) 3225-7784 Braslia - DF

91

}

connection = c; fields = f; output = o;

public void actionPerformed( ActionEvent e ) { try { Statement statement = connection.createStatement(); if ( !fields.first.getText().equals( "" ) && !fields.last.getText().equals( "" ) ) { String query = "INSERT INTO addresses (" + "firstname, lastname, address, city, " + "stateorprovince, postalcode, country, " + "emailaddress, homephone, faxnumber" + ") VALUES ('" + fields.first.getText() + "', '" + fields.last.getText() + "', '" + fields.address.getText() + "', '" + fields.city.getText() + "', '" + fields.state.getText() + "', '" + fields.zip.getText() + "', '" + fields.country.getText() + "', '" + fields.email.getText() + "', '" + fields.home.getText() + "', '" + fields.fax.getText() + "')"; int result = statement.executeUpdate( query ); if ( result == 1 ) JOptionPane.showMessageDialog( null, "A inseo foi um sucesso.", "Aviso", JOptionPane.PLAIN_MESSAGE ); else { JOptionPane.showMessageDialog( null, "A insero falhou!.", "Aviso", JOptionPane.WARNING_MESSAGE ); fields.first.setText( "" ); fields.last.setText( "" ); fields.address.setText( "" ); fields.city.setText( "" ); fields.state.setText( "" ); fields.zip.setText( "" ); fields.country.setText( "" ); fields.email.setText( "" ); fields.home.setText( "" ); fields.fax.setText( "" ); } } else{

JOptionPane.showMessageDialog( Tel.: (61) 3225-7784 Braslia - DF

SCRS 504 Bl. B Ent. 53 1 Andar CEP - 70331-550

92

null, "\nDigite o Nome e\n" + "o Sobrenome e aperte\n" + "o boto Salvar\n" , "Aviso", JOptionPane.WARNING_MESSAGE ); statement.close(); } } catch ( SQLException sqlex ) { JOptionPane.showMessageDialog( null, sqlex.toString(), "Aviso", JOptionPane.WARNING_MESSAGE ); } } 12) Salvar e compilar 13) Crie um novo arquivo e digite o cdigo abaixo: // PesquisarClientes.java // Definio da classe PesquisarClientes import java.awt.*; import java.awt.event.*; import java.sql.*; import javax.swing.*; import javax.swing.ScrollPaneLayout; public class PesquisarClientes implements ActionListener { private RotuloClientes fields; private JTextArea output; private Connection connection; public PesquisarClientes( Connection c, RotuloClientes f, JTextArea o ) { connection = c; fields = f; output = o; } public void actionPerformed( ActionEvent e ) { try { if ( !fields.last.getText().equals( "" ) ) { Statement statement =connection.createStatement(); String query = "SELECT * FROM addresses " + "WHERE lastname = '" + fields.last.getText() + "'"; ResultSet rs = statement.executeQuery( query ); display( rs ); statement.close(); } else fields.last.setText( SCRS 504 Bl. B Ent. 53 1 Andar CEP - 70331-550 Tel.: (61) 3225-7784 Braslia - DF }

93

}

"Digite o Sobrenome e aperte Pesquisar" ); } catch ( SQLException sqlex ) { JOptionPane.showMessageDialog( null, sqlex.toString() + "" + 1 , "Aviso", JOptionPane.WARNING_MESSAGE ); }

// Exibe os resultados da consulta. public void display( ResultSet rs ) { try { rs.next(); int recordNumber = rs.getInt( 1 ); if ( recordNumber != 0 ) { fields.id.setText( String.valueOf( recordNumber)); fields.first.setText( rs.getString( 2 ) ); fields.last.setText( rs.getString( 3 ) ); fields.address.setText( rs.getString( 4 ) ); fields.city.setText( rs.getString( 5 ) ); fields.state.setText( rs.getString( 6 ) ); fields.zip.setText( rs.getString( 7 ) ); fields.country.setText( rs.getString( 8 ) ); fields.email.setText( rs.getString( 9 ) ); fields.home.setText( rs.getString( 10 ) ); fields.fax.setText( rs.getString( 11 ) ); } else{ JOptionPane.showMessageDialog( null, "Registro no encontrado!!" , "Aviso", JOptionPane.WARNING_MESSAGE ); }

} }

} catch ( SQLException sqlex ) { JOptionPane.showMessageDialog( null, "Registro no encontrado!!" , "Aviso", JOptionPane.WARNING_MESSAGE ); }

14) Salvar e compilar 15) Crie um novo arquivo e digite o cdigo abaixo: // ExcluirClientes.java // Definio da classe ExcluirClientes import java.awt.*; import java.awt.event.*; import java.sql.*; import javax.swing.*; SCRS 504 Bl. B Ent. 53 1 Andar CEP - 70331-550 Tel.: (61) 3225-7784 Braslia - DF

94

import javax.swing.ScrollPaneLayout; public class ExcluirClientes implements ActionListener { private RotuloClientes fields; private JTextArea output; private Connection connection; public ExcluirClientes( Connection c, RotuloClientes f, JTextArea o ) { connection = c; fields = f; output = o; } public void actionPerformed( ActionEvent e ) { try { if ( !fields.id.getText().equals( "" ) ) { Statement statement =connection.createStatement(); String query = "DELETE FROM addresses " + "WHERE firstname = '" + fields.first.getText() + "'" + "AND lastname = '" + fields.last.getText() + "'"; statement.executeQuery( query ); statement.close(); } else

JOptionPane.showMessageDialog( null, " preciso ter um registro para apagar!!" , "Aviso", JOptionPane.WARNING_MESSAGE );

} catch ( SQLException sqlex ) { JOptionPane.showMessageDialog( null, "Registro Apagado!!!", "Aviso", JOptionPane.PLAIN_MESSAGE ); } } }

16) Salvar e compilar 17) Cire um novo arquivo e digite o cdigo abaixo: // Ajuda.java // Definio da classe Ajuda import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.ScrollPaneLayout; public class Ajuda implements ActionListener { SCRS 504 Bl. B Ent. 53 1 Andar CEP - 70331-550 Tel.: (61) 3225-7784 Braslia - DF

95

private JTextArea output; public Ajuda( JTextArea o ) { output = o; } public void actionPerformed( ActionEvent e ) { JOptionPane.showMessageDialog( null, "\nClic Pesquisar para localizar um registro.\n" + "Clic Adicionar para inserir um novo registro.\n" + "Clic Alterar para alterar " + "a informao em um registro.\n" + "Clic Limpar para esvaziar" + " os campos de registros.\n", "Aviso", JOptionPane.PLAIN_MESSAGE ); } } 18)Salvar e compilar 19)Acesse o arquivo Clientes.java.

20) Acessar o painel de controle do Windows, acessar o cone ferramentas administrativas, acessar o cone fonte de dados ODBC a seguinte janela ser apresentada:

Clique no boto adicionar

SCRS 504 Bl. B Ent. 53 1 Andar CEP - 70331-550

Tel.: (61) 3225-7784 Braslia - DF

96

Ao clicar no boto adicionar a seguinte tela ser exibida:

Clique em Microsoft Acess Driver.

Clique em concluir

Ao clicar na opo Microsoft Acess Driver e depois concluir ser exibida a seguinte tela:

SCRS 504 Bl. B Ent. 53 1 Andar CEP - 70331-550

Tel.: (61) 3225-7784 Braslia - DF

97

Clicar no boto nos botes Ok at fechar as janelas, fechar o painel de controle.

Coloque a fonte de dados

AddressBook

Selecionar o banco de dados AddressBook.mdb que esta dentro da sua pasta de trabalho do curso.

21) Fechar e voltar ao JCreator. 22) Compilar e executar o arquivo Clientes.java 23) Cadastrar alguns amigos24) Verificar se ficou salvo no banco de dados AddressBook

7 - JSP (Java Server Page)7.1) O que JSP?JSP significa (JAVA Server PAGE). Esta tecnologia usado para servir contedo dinmico para o usurio, usando lgica e dados do lado do servidor. JSP faz parte do J2EE (Java 2 Enterprise Edition) e juntamente com Java Servlets e Java Beans podem ser usadas para desenvolver aplicaes Web eficientes,escalveis e seguras rapidamente.

SCRS 504 Bl. B Ent. 53 1 Andar CEP - 70331-550

Tel.: (61) 3225-7784 Braslia - DF