You are on page 1of 238

Universidade do Sul de Santa Catarina

Banco de Dados II
Disciplina na modalidade a distncia

Palhoa UnisulVirtual 2006

Apresentao
Este livro didtico corresponde disciplina Banco de Dados II. O material foi elaborado visando a uma aprendizagem autnoma, abordando contedos especialmente selecionados e adotando uma linguagem que facilite seu estudo a distncia. Por falar em distncia, isso no signica que voc estar sozinho. No esquea que sua caminhada nesta disciplina ser acompanhada constantemente pelo Sistema Tutorial da UnisulVirtual. Entre em contato sempre que sentir necessidade, seja por correio postal, fax, telefone, e-mail ou Ambiente Virtual de Aprendizagem. Nossa equipe ter o maior prazer em atend-lo, pois sua aprendizagem nosso principal objetivo. Bom estudo e sucesso!

Equipe UnisulVirtual.

Marcelo Medeiros

Banco de Dados II
Livro didtico

Design instrucional Flavia Lumi Matuzawa

Palhoa UnisulVirtual 2006

Copyright UnisulVirtual 2006 Nenhuma parte desta publicao pode ser reproduzida por qualquer meio sem a prvia autorizao desta instituio.

005.75 M43 Medeiros, Marcelo Banco de dados II : livro didtico / Marcelo Medeiros ; design instrucional Flavia Lumi Matuzawa, Viviane Bastos. Palhoa : UnisulVirtual, 2006. 194p. : il. ; 28 cm. Inclui bibliograa. ISBN 978-85-60694-15-3 1. Banco de dados. 2. Banco de dados orientado a objetos. 3. Banco de dados relacionais. I. Matuzawa, Flavia Lumi. II. Bastos, Viviane. III. Ttulo.
Ficha catalogrfica elaborada pela Biblioteca Universitria da Unisul

Crditos
Unisul - Universidade do Sul de Santa Catarina UnisulVirtual - Educao Superior a Distncia
Campus UnisulVirtual Rua Joo Pereira dos Santos, 303 Palhoa - SC - 88130-475 Fone/fax: (48) 3279-1541 e 3279-1542 E-mail: cursovirtual@unisul.br Site: www.virtual.unisul.br Reitor Unisul Gerson Luiz Joner da Silveira Vice-Reitor e Pr-Reitor Acadmico Sebastio Salsio Heerdt Pr-Reitor Administrativo Marcus Vincius Antoles da Silva Ferreira Campus Tubaro e Ararangu Diretor: Valter Alves Schmitz Neto Diretora adjunta: Alexandra Orseni Campus Grande Florianpolis e Norte da Ilha Diretor: Ailton Nazareno Soares Diretora adjunta: Cibele Schuelter Campus UnisulVirtual Diretor: Joo Vianney Diretora adjunta: Jucimara Roesler Diva Marlia Flemming Elisa Flemming Luz Itamar Pedro Bevilaqua Janete Elza Felisbino Jucimara Roesler Lauro Jos Ballock Luiz Guilherme Buchmann Figueiredo Luiz Otvio Botelho Lento Marcelo Cavalcanti Mauri Luiz Heerdt Mauro Faccioni Filho Nlio Herzmann Onei Tadeu Dutra Patrcia Alberton Patrcia Pozza Rafael Pete da Silva Raulino Jac Brning Design Grco Cristiano Neri Gonalves Ribeiro (coordenador) Adriana Ferreira dos Santos Alex Sandro Xavier Fernando Roberto Dias Zimmermann Higor Ghisi Luciano Pedro Paulo Alves Teixeira Rafael Pessi Vilson Martins Filho Equipe Didtico-Pedaggica Angelita Maral Flores Carmen Maria Cipriani Pandini Carolina Hoeller da Silva Boeing Cristina Klipp de Oliveira Dalva Maria Alves Godoy Daniela Erani Monteiro Will Dnia Falco de Bittencourt Elisa Flemming Luz Enzo de Oliveira Moreira Flvia Lumi Matuzawa Karla Leonora Dahse Nunes Mrcia Loch Patrcia Meneghel Silvana Denise Guimares Tade-Ane de Amorim Vanessa de Andrade Manuel Vanessa Francine Corra Viviane Bastos Viviani Poyer Logstica de Encontros Presenciais Caroline Batista (Coordenadora) Aracelli Araldi Juliana Costa Pinheiro Letcia Cristina Pinheiro Priscila Santos Alves Monitoria e Suporte Harrison Laske (coordenador) Adriana Silveira Caroline Mendona Edison Rodrigo Valim Gislane Frasson de Souza Josiane Conceio Leal Rafael da Cunha Lara Vincius Maycot Seram Produo Industrial e Logstica Arthur Emmanuel F. Silveira Eduardo Kraus Francisco Asp Jeferson Cassiano Almeida da Costa Projetos Corporativos Diane Dal Mago Vanderlei Brasil Secretaria de Ensino a Distncia Karine Augusta Zanoni (secretria de ensino) Djeime Sammer Bortolotti Carla Cristina Sbardella Grasiela Martins James Marcel Silva Ribeiro Lamuni Souza Liana Pamplona Maira Marina Martins Godinho Marcelo Pereira Marcos Alcides Medeiros Junior Maria Isabel Aragon Olavo Lajs Priscilla Geovana Pagani Ricardo Alexandre Bianchini Silvana Henrique Silva Secretria Executiva Viviane Schalata Martins Tecnologia Osmar de Oliveira Braz Jnior (coordenador) Giorgio Massignani Rodrigo de Barcelos Martins Sidnei Rodrigo Basei

Edio Livro Didtico


Professor Conteudista Marcelo Medeiros Design Instrucional Flavia Lumi Matuzawa Projeto Grco e Capa Equipe UnisulVirtual Diagramao Rafael Pessi

Equipe UnisulVirtual
Administrao Renato Andr Luz Valmir Vencio Incio Bibliotecria Soraya Arruda Waltrick Coordenao dos Cursos Adriano Srgio da Cunha Ana Luisa Mlbert Ana Paula Reusing Pacheco

Reviso Ortogrca
Nome do REVISOR

Impresso
Postmix

Sumrio
Apresentao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 03 Palavras do professor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 09 Plano de estudo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 UNIDADE UNIDADE UNIDADE UNIDADE UNIDADE UNIDADE UNIDADE UNIDADE UNIDADE 1 2 3 4 5 6 7 8 9 Sistema computacional como soluo do problema . . . . . . . . . . . . 15 Preparando o ambiente de banco de dados . . . . . . . . . . . . . . . . . . . . 43 Ambiente de programao Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 Linguagem de definio de dados - DDL . . . . . . . . . . . . . . . . . . . . . . . 91 Ambiente de desenvolvimento integrado . . . . . . . . . . . . . . . . . . . . . 107 Comandos em Java para conexo com banco de dados . . . . . . . 127 Comandos em Java para Apresentao dos Dados . . . . . . . . . . . . 157 Criando a aplicao de cadastro de alunos . . . . . . . . . . . . . . . . . . . . 177 Criando as consultas para a Tabela de Alunos . . . . . . . . . . . . . . . . . . 209

Para concluir o estudo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225 Sobre o professor conteudista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 Referncias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 Respostas e comentrios das atividades de auto-avaliao . . . . . . . . . . . . . . . . . . . . 231

Palavras do professor
Ol, voc esta iniciando o estudo da disciplina de Banco de Dados II. Se voc parar um pouco para avaliar o seu dia-a-dia, voc notar que convive com um mundo de informaes, que so usadas nas suas atividades dirias, por mais simples que sejam. Nesta disciplina voc conhecer sobre as formas de armazenamento e acesso aos dados gravados no computador e sobre as tcnicas existentes que possibilitaro a voc integrar um sistema de banco de dados e uma linguagem de programao, ou de forma resumida, criar um sistema computacional com acesso a banco de dados. Esta disciplina possibilitar que voc entenda melhor as regras de implementao que permitem que um sistema de banco de dados seja acessado e manipulado por um programa desenvolvido em uma linguagem de programao de alto nvel, neste caso o Java. Assim, espero que voc possa aproveitar ao mximo o contedo desta disciplina.

Bom estudo!

Prof. Marcelo Medeiros

Plano de estudo
O plano de estudos visa a orient-lo/a no desenvolvimento da Disciplina. Nele, voc encontrar elementos que esclarecero o contexto da Disciplina e sugeriro formas de organizar o seu tempo de estudos. O processo de ensino e aprendizagem na UnisulVirtual leva em conta instrumentos que se articulam e se complementam. Assim, a construo de competncias se d sobre a articulao de metodologias e por meio das diversas formas de ao/mediao. So elementos desse processo: o livro didtico; o Ambiente Virtual de Aprendizagem - AVA; as atividades de avaliao (complementares, a distncia e presenciais).

Ementa
Fundamentao terica do modelo relacional: restries de integridade bsica, integridade semntica. Mapeamento do modelo conceitual para o modelo relacional. Linguagem de consulta estruturada (SQL). Normalizao. Banco de dados aplicados em sistemas web. Anlise, projeto e implementao de banco de exemplos reais.

Universidade do Sul de Santa Catarina

Objetivo
Apresentar os principais conceitos de sistemas de Banco de Dados e as tcnicas de modelagem de dados que permitam ao aluno o desenvolvimento de sistemas computacionais com acesso a banco de dados, atravs de uma linguagem de programao de alto nvel. Ao nal do curso o aluno dever ser capaz de: Avaliar os sistemas de Banco de dados existentes; Elaborar modelo conceitual atravs da abordagem entidade-relacionamento; Criar sicamente um banco de dados; Implementar rotinas de programao para conexo e manipulao de um banco de dados em Java. Criar um software com acesso ao SGDB MYSQL.

Carga horria
90 horas 6 crditos.

Agenda de atividades/ Cronograma


Verique com ateno o AVA, organize-se para acessar periodicamente o espao da Disciplina. O sucesso nos seus estudos depende da priorizao do tempo para a leitura; da realizao de anlises e snteses do contedo; e da interao com os seus colegas e tutor. No perca os prazos das atividades. Registre no espao a seguir as datas, com base no cronograma da disciplina disponibilizado no AVA. Use o quadro para agendar e programar as atividades relativas ao desenvolvimento da Disciplina.

12

Banco de Dados I

Atividades
Avaliao a Distncia 1 Avaliao a Distncia 2 Avaliao Presencial 1 Avaliao Presencial 2 (2 chamada) Avaliao Final (caso necessrio)

Demais atividades (registro pessoal)

13

UNIDADE 1

Sistema computacional como soluo do problema


Objetivos de aprendizagem
Compreender o papel do desenvolvedor de softwares. Entender o conceito de problema relacionado computao. Compreender o ciclo de vida de um software. Analisar e transformar um problema em soluo computacional.

Sees de estudo
Seo 1 Analisando o problema. Seo 2 Apresentando o problema. Seo 3 Criando os relacionamentos entre os dados. Seo 4 Modelo de dados do sistema. Seo 5 Criao do script SQL.

Universidade do Sul de Santa Catarina

Para incio de conversa


Uma das grandes contribuies da informtica para a sociedade atual a generalizao das qualidades prossionais de cada indivduo. Em outras palavras signica dizer que o famoso jeitinho brasileiro est se transformando em um atributo muito desejado nos prossionais atuais, independente da sua rea de atuao. Essa generalizao permite que as pessoas realizem trabalhos de outros prossionais de uma maneira aceitvel, com qualidade, a partir da sua capacidade de adquirir novas aptides. Se voc voltar um pouco no tempo, poder se recordar de algumas prosses que eram essenciais ao dia-a-dia de uma grande empresa. As empresas careciam, por exemplo, de uma exmia secretria, com grandes qualidades de datilgrafa, qualidade essa, decisiva na sua contratao. Um outro exemplo seria o arquivista responsvel por coordenar todos os processos de armazenamento de documentos importantes da empresa, catalogando-os e colocando-os em ordem naqueles enormes chrios, alguns deles, at mesmo, com segredos, como se fossem cofres com um grande tesouro guardado a sete chaves. Eu poderia citar aqui vrias outras prosses que foram evoluindo, fundindo-se a outras que surgiram nos tempos atuais, principalmente em um pas em desenvolvimento como o nosso, no qual qualidades prossionais agregadas podem fazer muita diferena na hora da contratao de um prossional. Alm de signicar uma economia ao contratante. H os que questionam essa transformao, avaliando-a como uma forma de excluso social, justicando que aqueles que possuem capacidade e condies nanceiras para se adequar s mais diversas habilidades prossionais tm maior chance de sucesso prossional no mundo globalizado.

16

Banco de Dados II

Eu considero essa transformao como uma evoluo e uma necessidade. Na rea de desenvolvimento de softwares essa mesma transformao vem ocorrendo. As habilidades de um prossional envolvido com anlise, armazenamento e implementao de sistemas e banco de dados vm se fundindo para um prossional que abrace as trs tecnologias. O prossional de desenvolvimento de softwares precisa ter a habilidade para identicar as reais necessidades dos seus clientes e a capacidade tcnica para transformar tudo isso em uma soluo computacional. Que vale salientar, no tarefa das mais fceis. Agregue a isso a necessidade de garantir que os dados armazenados pelo sistema representem elmente a realidade do dia-a-dia de seus usurios, com integridade e facilidade de acesso. Essa capacidade de se adaptar s mais diversas necessidades alcanada a partir da experincia prossional adquirida no diaa-dia, adicionada de uma dose de boa vontade e estudo, muito estudo, anal, essa rea requer uma constante reciclagem. Dessa forma, nesta unidade voc convidando a um contato com a rea da computao que envolve anlise, implementao e armazenamento de dados, de forma prtica, fazendo com que voc tenha uma viso mais aprofundada do papel do prossional de banco de dados como gerador de solues computacionais, e mais do que isso, que voc seja pea fundamental no processo de criao de um sistema computacional com acesso a banco de dados. Portanto, mais do que nunca, mos obra!

Unidade 1

17

Universidade do Sul de Santa Catarina

SEO 1 Analisando o problema


Se voc zer uma busca em alguns dicionrios da lngua portuguesa pela palavra problema, encontrar algo como:

Problema: questo que se prope para ser resolvida; algo difcil de explicar; dvida; questo; mistrio; enigma.

At a, acredito que no seja nenhuma novidade essa denio de problema, certo? Porm, qual a relao entre a palavra problema e as tarefas executadas por um prossional de informtica, em especial aqueles que possuem como principal objetivo a implementao de softwares? Pois bem, o prossional de informtica envolvido com o desenvolvimento de sistemas computacionais, ou simplesmente softwares, precisa realizar uma tarefa muito complexa, que compreender as necessidades do cliente a partir do problema apresentado. Esse prossional responsvel pelo desenvolvimento e manuteno de sistemas de informao para qualquer tipo de organizao, seja ela pblica ou privada, de grande porte ou no. A anlise detalhada do problema fundamental para se levantar os requisitos necessrios para que o software a ser implementado atenda realmente as necessidades dos seus usurios, ou, em outras palavras, solucione os seus problemas. A anlise do problema tem como principais nalidades: o levantamento de requisitos; a modelagem e especicao das funcionalidades e delimitaes do sistema; a denio dos mdulos do sistema. A partir da anlise das necessidades do cliente possvel: denir em qual plataforma (sistema operacional, ferramenta de banco de dados e linguagem de programao) o sistema ser desenvolvido;
18

Banco de Dados II

apresentar um Projeto Lgico e um Projeto Fsico para implementao e funcionamento do sistema; prever o perodo de testes e treinamento dos usurios e, quando necessrio, indicar as melhores solues para a manuteno do sistema. Vale uma observao importante de que existe uma diferena muito clara entre projeto lgico e projeto fsico, conforme mostrado na tabela a seguir:
QUADRO 1.1 - COMPARATIVO ENTRE O PROJETO LGICO E PROJETO FSICO

Projeto Lgico
O objetivo do projeto lgico a especicao detalhada dos elementos do software quanto lgica, sem se preocupar com as ferramentas que sero utilizadas. Finalidade: captao das informaes, anlise e correes;

Projeto Fsico
Tendo como base o Projeto Lgico, o objetivo do projeto fsico detalhar os elementos do software quanto ao fsico, se preocupando com as ferramentas computacionais que sero utilizadas. Finalidade: especicao tcnica completa do software, visando a sua implementao, como linguagem de programao e o sistema de banco de dados utilizado.

Quando se trabalha com desenvolvimento de softwares, duas palavras so muito comuns: implementao e implantao, porm, apesar de sonoridades parecidas, cada uma delas possui uma nalidade nica no processo de criao de um software. Veja as denies a seguir.
Implementao: tarefa de desenvolvimento e simulao do software especificado nos projetos lgico e fsico. Tem como resultado os programas de cdigo fonte, as modelagens do sistema e do banco de dados, bem como as documentaes de regras de funcionamento do sistema desenvolvido. Implantao: tem como objetivo o treinamento do usurio, as configuraes e a instalao do sistema implementado no cliente, como um produto final, constando de manual do usurio e termos de garantia.

Unidade 1

19

Universidade do Sul de Santa Catarina

Note que cada uma destas tarefas - denio do Projeto Lgico, Projeto Fsico, implementao e implantao - possui uma ordem cronolgica. No possvel implantar um sistema sem que ele tenha sido implementado. Por outro lado, ca complicado implement-lo sem que sejam denidos os projetos Lgico e Fsico. Essa ordem cronolgica recebe o nome de ciclo de vida do sistema computacional, e pode ser representada pelo seguinte organograma:
GRFICO 1.1 - CICLO DE VIDA DO SOFTWARE

20

Banco de Dados II

Como em qualquer rea de desenvolvimento, a etapa de planejamento fundamental. No organograma apresentado, pode-se ver que os processos de levantamento de requisitos, projetos Lgico e Fsico, e a implementao podem acontecer repetidas e inmeras vezes at que o teste do sistema chegue ao resultado esperado pelo usurio-nal.
Quanto maior a especificao dos requisitos funcionais do sistema, com um alto nvel de anlise e avaliao dos dados coletados, maior a probabilidade de se alcanar o sucesso desejado na etapa de testes do sistema.

Lembre-se que quanto mais tempo levar para chegar ao resultado desejado, mais caro se torna o projeto - alm de gerar no cliente que contratou os servios certa desconana sobre a qualidade do produto nal. Para achar o ponto ideal na administrao do tempo e da qualidade, necessria a experincia do dia-a-dia. Cada projeto de implementao de software possui uma particularidade, na qual, mesmo semelhante a outros projetos j desenvolvidos, pode apresentar funcionalidades e necessidades diferentes. A experincia de cada novo projeto que vai lapidando a capacidade do desenvolvedor de software em analisar requisitos e transform-los em softwares.

Por isso, no se assuste, pois esse amadurecimento leva tempo, requer pacincia, dedicao e estudo!
Na prxima seo voc ver o problema proposto por mim para ser analisado e transformado em um sistema computacional. Quem sabe, no comea a a sua grande carreira como desenvolvedor de softwares? At l!

Unidade 1

21

Universidade do Sul de Santa Catarina

SEO 2 Apresentando o problema


At aqui voc j teve um contato inicial com a tarefa de levantamento de requisitos de um sistema. A partir desta seo, voc ter o primeiro contato com o problema sugerido para ser analisado, especicado e, principalmente, solucionado na forma de um sistema computacional, ou simplesmente, um software. Acompanhe com ateno esse processo!

O problema
O proprietrio da escola Sabe Tudo, deseja implantar na sua escola um sistema para controle acadmico de seus alunos. Apesar de a escola ser antiga, bem conceituada e possuir vrios alunos, no h no setor administrativo nenhum sistema computacional para cadastramento dos seus alunos. Todos os cadastros de alunos, disciplinas e matrculas so realizados em uma planilha de computador, sem controle algum de acesso. Alm de tornar o processo muito demorado, vrios problemas ocorrem, como: os mesmos dados so cadastrados vrias vezes; os registros so cadastrados de forma incompleta; os alunos so cadastrados em turmas erradas; no h controle de alunos matriculados, nem de turmas com vagas; faltam dados nos registros; as pesquisas por dados de alunos, cursos, turmas e disciplinas so muito demoradas e muitas vezes os pais dos alunos reclamam da demora no atendimento.

22

Banco de Dados II

Dessa forma, ele busca implantar um sistema que permita o cadastro dos alunos, professores, matrculas e disciplinas. Esse sistema deve rodar em um servidor que car instalado na sala da diretoria e todos os funcionrios tero acesso ao sistema por meio de computadores instalados no apoio pedaggico e na sala dos professores. Um ponto importante relatado pelo dono da escola que o sistema deve ter um custo acessvel, pois no inteno dele um alto investimento na rea de informtica no momento.

Levantamento dos dados


Com base no problema relatado, podem-se fazer alguns levantamentos importantes, como:

o sistema dever ter um controle de acesso de usurios; o sistema dever permitir o cadastramento de dados dos alunos, professores, disciplinas e realizar a matrcula dos alunos; o sistema dever funcionar em uma plataforma cliente-servidor, na qual o banco de dados estar instalado em um servidor na sala da diretoria e as mquinas cliente sero acessadas de dois pontos distintos, como a sala de apoio e sala dos professores; alguns dados devem ser obrigatoriamente cadastrados; dados repetidos no podem ser cadastrados; o sistema deve possibilitar formas de pesquisas aos alunos, cursos, disciplinas e turma com vagas; o sistema deve evitar o cadastramento de alunos em turmas erradas.

Unidade 1

23

Universidade do Sul de Santa Catarina

Dados complementares Como os dados atuais esto defasados, o dono da escola apresentou as chas cadastrais de alunos, professores e matrculas que devem ser usadas pelo sistema computacional. A seguir so apresentadas as referidas chas cadastrais:

TABELA 1.1 - FICHA CADASTRAL DOS ALUNOS

TABELA 1.2 - FICHA CADASTRAL DOS PROFESSORES

24

Banco de Dados II

TABELA 1.3 - FICHA DE MATRCULA

Com base nessas chas cadastrais j se pode ter uma idia dos dados que sero cadastrados no sistema, porm necessrio que se converta esses dados coletados para forma de um modelo de entidade relacional - MER. Pelo modelo de entidade relacional ser possvel estipular os campos obrigatrios, chaves primrias e estrangeiras do banco de dados que dever ser implementado.

SEO 3 Criando os relacionamentos entre os dados


Nesse primeiro passo, a modelagem de dados representar os conjuntos de dados apresentados pelas chas cadastrais, com os seus respectivos relacionamentos.

Lembre-se que o que define o relacionamento entre tabelas de um banco de dados a necessidade de o dado de uma determinada tabela existir obrigatoriamente em outra tabela. Dessa forma, evitase a redundncia dos dados cadastrados.

Em uma viso bem macro, podemos modelar o problema como sendo a integrao de 3 tabelas: Alunos, Matrculas e Turmas:

Unidade 1

25

Universidade do Sul de Santa Catarina

FIGURA 1.1 - MODELO DE DADOS VISO GERAL

No modelo inicial j se destaca uma propriedade importante, pois para que seja feita uma matrcula necessrio que o aluno esteja cadastrado na Tabela de Alunos, e que a turma escolhida esteja cadastrada na Tabela de Turmas. Dessa forma, a Tabela de Matrculas uma tabela do tipo associativa, que interliga as tabelas Alunos e Turmas. Veja a seguir o mesmo modelo j com as cardinalidades entre as tabelas:

FIGURA 1.2 - MODELO DE DADOS VISO GERAL COM AS CARDINALIDADES

De acordo com a ltima gura, tem-se as seguintes regras: um aluno s pode fazer matrcula em uma nica turma; uma turma, por sua vez, pode conter N alunos.

26

Banco de Dados II

Com base nos dados levantados, pode-se acrescentar mais uma tabela ao modelo anterior, que a Tabela de Professores:

FIGURA 1.3 - MODELO DE DADOS VISO GERAL COM AS CARDINALIDADES E A TABELA DE PROFESSORES

Note que a Tabela de Professores no se relaciona com alunos e nem com matrculas, porm, essa tabela de professores deve se relacionar com a Tabela de Turmas, pois dessa forma sabe-se quais os professores de determinada turma de aula. O modelo de dados car da seguinte maneira:

FIGURA 1.4 - MODELO DE DADOS VISO GERAL COM A CARDINALIDADES N PARA N

H um problema referente modelagem de um banco de dados: no se pode ter um relacionamento N para N entre tabelas. Para solucionar tal problema, ser colocada uma tabela associativa

Unidade 1

27

Universidade do Sul de Santa Catarina

entre Turmas e Professores, para registrar em qual turma cada professor est locado. Veja como car o modelo de dados:

FIGURA 1.5 - MODELO DE DADOS VISO GERAL COM A TABELA ASSOCIATIVA ALOCAES

Com isso est encerrado o processo de modelagem de dados. Nas prximas sees ser necessrio especicar os campos de cada tabela, criar um script em linguagem SQL que implemente o modelo desenhado com os tipos de dado de cada campo e suas regras de manipulao. Ento, at l.

28

Banco de Dados II

SEO 4 Modelo de dados do sistema


Na seo anterior voc viu um modelo de dados bem geral, que especicava apenas as tabelas do modelo, sem levar em considerao os campos e os seus respectivos tipos de dados. A partir de agora, com base nos dados cadastrados em cada cha utilizada na escola Sabe Tudo, voc criar um modelo de dados completo, que ser responsvel pelo armazenamento de todas as informaes inseridas e manipuladas pelo sistema.

Tabela de Alunos
A Tabela de Alunos representa elmente os dados da sua respectiva cha cadastral.
TABELA 1.4 - TABELA DE ALUNOS COM OS CAMPOS E TIPOS DE DADOS

Unidade 1

29

Universidade do Sul de Santa Catarina

Tabela de Professores
A Tabela de Professores representa elmente os dados da sua cha cadastral.
TABELA 1.5 - TABELA DE PROFESSORES COM OS CAMPOS E TIPOS DE DADOS

Tabela de Matrculas
A Tabela de Matrculas representa a relao entre o aluno cadastrado na Tabela de Alunos e a turma cadastrada na Tabela de Turmas. Como os dados sero armazenados em um banco de dados, ser utilizado o relacionamento entre as tabelas, por meio das chaves estrangeiras, a m de garantir a integridade dos dados cadastrados.

30

Banco de Dados II

Dessa forma a Tabela de Matrculas car desta forma:


TABELA 1.6 - TABELA DE MATRCULAS COM OS CAMPOS E TIPOS DE DADOS

Tabela de Turmas
A Tabela de Turmas no possui uma cha cadastral padro, porm com a anlise do problema pode-se chegar seguinte estrutura:
TABELA 1.7 - TABELA DE TURMAS COM OS CAMPOS E TIPOS DE CAMPOS

Tabela de Alocaes
A Tabela de Alocaes tambm no possui uma cha padro, porm a sua nalidade bem clara, essa tabela representa a relao entre o professor e a turma para qual ele dever lecionar. A sua estrutura car assim:
TABELA 1.8 - TABELA DE ALOCAES COM OS CAMPOS E TIPOS DE CAMPOS

Unidade 1

31

Universidade do Sul de Santa Catarina

Com isso, o modelo de dados est composto por todas as tabelas, com seus respectivos campos e tipos de campos. Veja a seguir o modelo de dados completo:

FIGURA 1.6 - MODELO DE DADOS COMPLETO

Esse modelo uma representao grca, para visualizao e interpretao das regras do banco de dados que ser criado.

32

Banco de Dados II

O prximo passo converter esse modelo para um conjunto de comandos de denio de dados da linguagem SQL (Structure Query Language), chamados de script SQL.

SEO 5 Criao do script SQL


O script SQL um arquivo escrito em qualquer tipo de editor de texto, como por exemplo, o Bloco de Notas do Windows. O ideal salvar esse arquivo com a extenso .sql para indicar que se trata de um script SQL. Nesse arquivo so escritos os comandos em SQL que realizam as seguintes tarefas: criao das tabelas; denio das colunas de cada tabela (campos); denio dos tipos de dados de cada coluna (campos); denio das regras de chave primria e chave estrangeira de cada tabela. O script em SQL de criao do banco de dados est diretamente relacionada aos comandos de denio dedados da linguagem SQL, que so: Create Table, Drop Table e Alter Table. Para facilitar, sero apresentados os scripts de cada uma das tabelas do modelo de dados da seo anterior separadamente, e por ltimo o script por completo.

Unidade 1

33

Universidade do Sul de Santa Catarina

Criao da Tabela de Alunos


Veja a seguir o script de criao da Tabela de Alunos:
CREATE TABLE ALUNOS ( Matricula Nome Data_Nascimento Idade CPF RG_Identidade Nome_Pai Nome_Mae Endereco Numero Cidade Estado Bairro Telefone Celular ChamarPor Alergia Grupo_Sangue Doador PRIMARY KEY ); int(11) NOT NULL, varchar(40) NOT NULL, Date NOT NULL, int(4) NOT NULL, varchar(14), varchar(20), varchar(40) NOT NULL, varchar(40) NOT NULL, varchar(50) NOT NULL, int(4) NOT NULL, varchar(35) NOT NULL, char(2) NOT NULL, varchar(40) NOT NULL, varchar(30), varchar(30), varchar(30), varchar(30), varchar(10), int(4), ( Matricula )

Com base nesse script, a estrutura da tabela de alunos possui as seguintes regras:
TABELA 1.9 - REGRAS DA TABELA DE ALUNOS

34

Banco de Dados II

A tabela anterior representa o tipo de cada coluna, o seu nome, se a mesma obrigatria e se chave primria.

Criao da Tabela de Professores


CREATE TABLE PROFESSORES Codigo Nome Data_Nascimento Idade CPF RG_Identidade CTPS Graduacao Estado_Civil Filhos Endereco Numero Cidade Bairro Estado Telefone Celular Grupo_Sangue Doador PRIMARY KEY ); ( int(4) NOT NULL, varchar(40) NOT NULL, Date NOT NULL , int(4) NOT NULL, varchar(14) NOT NULL , varchar(20) NOT NULL, varchar(20) NOT NULL, varchar(30) NOT NULL, varchar(25) NOT NULL, int(4) NOT NULL, varchar(50) NOT NULL , int(4) NOT NULL, varchar(35) NOT NULL, varchar(30) NOT NULL , char(2) NOT NULL, varchar(25) NOT NULL, varchar(25), varchar(10), int(4), ( Codigo )

Com base neste script, a estrutura da Tabela de Professores possui as seguintes regras:
TABELA 1.10 - REGRAS DA TABELA DE PROFESSORES

Unidade 1

35

Universidade do Sul de Santa Catarina

Criao da Tabela de Turmas


CREATE TABLE TURMAS ( Codigo_Turma int(4) NOT NULL, Descricao varchar(30) NOT NULL, Grau int(4) NOT NULL, Serie int(4) NOT NULL, Turno char(1) NOT NULL, PRIMARY KEY ( Codigo_Turma ) );

Com base nesse script, a estrutura da Tabela de Turmas possui as seguintes regras:
TABELA 1.11 - REGRAS DA TABELA DE TURMAS

Para nalizar, a criao das tabelas associativas: Matrculas e Alocaes.

Criao da Tabela de Matrculas


CREATE TABLE MATRICULAS ( Mat_Aluno int(11) NOT NULL, Cod_Turma int(4) NOT NULL, Valor oat (9,2) NOT NULL, Data Date NOT NULL, PRIMARY KEY (Mat_Aluno, Cod_Turma), Foreign Key (Mat_Aluno) References Alunos (Matricula), Foreign Key (Cod_Turma) References Turmas (Codigo_Turma) );

36

Banco de Dados II

Com base neste script, a estrutura da Tabela de Matrculas possui as seguintes regras:
TABELA 1.12 - REGRAS DA TABELA DE MATRCULAS

Criao da Tabela de Alocaes


CREATE TABLE ALOCACOES ( Codigo_Professor_Aloca int(4) NOT NULL, Codigo_Turma_Aloca int(4) NOT NULL, PRIMARY KEY (Codigo_Professor_Aloca,Codigo_Turma_Aloca ), Foreign Key (Codigo_Professor_Aloca) References Professores(Codigo), Foreign Key (Codigo_Turma_Aloca) References Turmas(Codigo_Turma) );

Com base nesse script, a estrutura da Tabela de Alocaes possui as seguintes regras:
TABELA 1.13 - REGRAS DA TABELA DE ALOCAES

O script de criao do banco de dados cou da seguinte forma:

#-- Script de Criao das Tabelas #-- Remove as Tabelas DROP TABLE IF EXISTS ALOCACOES; DROP TABLE IF EXISTS MATRICULAS; DROP TABLE IF EXISTS ALUNOS; DROP TABLE IF EXISTS TURMAS; DROP TABLE IF EXISTS PROFESSORES;
SEGUE

Unidade 1

37

Universidade do Sul de Santa Catarina

#-- Criar a Tabela de Alunos CREATE TABLE ALUNOS ( Matricula Nome Data_Nascimento Idade CPF RG_Identidade Nome_Pai Nome_Mae Endereco Numero Cidade Estado Bairro Telefone Celular Chamarpor Alergia Grupo_Sangue Doador PRIMARY KEY ); #-- Criar a Tabela de Professores CREATE TABLE PROFESSORES Codigo Nome Data_Nascimento Idade CPF RG_Identidade CTPS Graduacao Estado_Civil Filhos Endereco Numero Cidade Bairro Estado Telefone Celular Grupo_Sangue Doador PRIMARY KEY ( Codigo ) ); ( Int(4) NOT NULL, Varchar(40) NOT NULL, Date NOT NULL , Int(4) NOT NULL, Varchar(14) NOT NULL , Varchar(20) NOT NULL, Varchar(20) NOT NULL, Varchar(30) NOT NULL, Varchar(25) NOT NULL, Int(4) NOT NULL, Varchar(50) NOT NULL , Int(4) NOT NULL, Varchar(35) NOT NULL, Varchar(30) NOT NULL , Char(2) NOT NULL, Varchar(25) NOT NULL, Varchar(25), Varchar(10), Int(4), Int(11) NOT NULL, Varchar(40) NOT NULL, Date NOT NULL, Int(4) NOT NULL, Varchar(14), Varchar(20), Varchar(40) NOT NULL, Varchar(40) NOT NULL, Varchar(50) NOT NULL, Int(4) NOT NULL, Varchar(35) NOT NULL, Char(2) NOT NULL, Varchar(40) NOT NULL, Varchar(30), Varchar(30), Varchar(30), Varchar(30), Varchar(10), Int(4), ( Matricula )

38

Banco de Dados II

#-- Criar a Tabela de Turmas CREATE TABLE TURMAS ( Codigo_Turma Int(4) NOT NULL, Descricao Varchar(30) NOT NULL, Grau Int(4) NOT NULL, Serie Int(4) NOT NULL, Turno Char(1) NOT NULL, PRIMARY KEY ( Codigo_Turma ) ); #-- Criar a Tabela de Matrculas CREATE TABLE MATRICULAS ( Mat_Aluno Int(11) NOT NULL, Cod_Turma Int(4) NOT NULL, Valor Float(9,2) NOT NULL , Data Date NOT NULL, PRIMARY KEY (Mat_Aluno,Cod_Turma), FOREIGN KEY(MAT_ALUNO) REFERENCES ALUNOS(MATRICULA), FOREIGN KEY(COD_TURMA) REFERENCES TURMAS(CODIGO_TURMA) ); #-- Criar a Tabela de Alocaes CREATE TABLE ALOCACOES ( Codigo_Professor_Aloca Int(4) NOT NULL , Codigo_Turma_Aloca Int(4) NOT NULL , PRIMARY KEY ( Codigo_Professor_Aloca,Codigo_Turma_Aloca ), FOREIGN KEY (CODIGO_PROFESSOR_ALOCA) REFERENCES PROFESSORES(CODIGO), FOREIGN KEY (CODIGO_TURMA_ALOCA) REFERENCES TURMAS(CODIGO_TURMA) );

Bem, com isso voc tem a modelagem do banco de dados em um formato que pode ser lido pela ferramenta de banco de dados que ser utilizado para implementao do sistema e armazenamento dos dados. Essa uma entre vrias etapas para se criar um software. Na prxima unidade voc vai para etapa de preparao, na qual sero especicadas a linguagem de programao, a ferramenta de banco de dados e as funcionalidades do sistema. At a prxima unidade!

Unidade 1

39

Universidade do Sul de Santa Catarina

Sntese
Voc pde estudar nesta unidade que a tarefa de desenvolver software requer muita anlise por parte do prossional. A principal diculdade transformar um problema em uma soluo computacional que atenda as necessidades do cliente e seus usurios. As tarefas de especicao do problema possuem uma cronologia e ordem formal, a inverso dessas tarefas pode resultar em mais tempo de desenvolvimento e conseqentemente, em maior custo. Na maioria das vezes, um sistema computacional est agregado a uma soluo de banco de dados, responsvel por armazenar e garantir a integridade dos dados. Para se chegar a um modelo de dados ideal e que atenda as necessidades do usurio importantssimo um levantamento de dados criterioso e organizado. A representao do modelo de dados feita pela modelagem de entidade e relacionamentos, que uma representao grca para maior compreenso da soluo que est sendo adotada. Para transformar esta soluo em uma ferramenta de banco de dados, necessria a criao de um conjunto de comandos em SQL que construa e altere as estruturas modeladas, e esse conjunto de comandos chamado de script. Um script pode mudar de acordo com a ferramenta computacional que se deseja adotar, por algum novo comando que seja necessrio, porm a modelagem de entidade e relacionamento nica, independente da ferramenta computacional e a principal referncia para o sistema que ser implementado.

40

Banco de Dados II

Atividades de auto-avaliao
Efetue as atividades de auto-avaliao e, a seguir, acompanhe as respostas e comentrios a respeito. Para melhor aproveitamento do seu estudo, realize a conferncia de suas respostas somente depois de fazer as atividades propostas. Leia com ateno os enunciados e realize, a seguir, as atividades. 1. A maioria das profisses exige que o especialista seja formado em um curso de graduao, como mdicos e advogados. Na rea de desenvolvimento de softwares no h exigncia de graduao para que um profissional execute as suas atividades. Qual a sua opinio sobre essa questo?

2. Quando se desenvolve um produto, como uma cadeira, uma casa, etc., durante o processo de criao possvel apresent-lo ao cliente, para seu acompanhamento. Mas, no caso de desenvolvimento de softwares no h um produto palpvel para ser apresentado. Como agir em uma situao como essa?

Unidade 1

41

Universidade do Sul de Santa Catarina

Saiba mais
Para aprofundar as questes abordadas nesta unidade, voc poder pesquisar em: CHEN, Peter. Modelagem de dados: a abordagem entidade-relacionamento para projeto lgico. So Paulo: Makron Books, 1990. DATE, C J. Bancos de dados: fundamentos. Rio de Janeiro: Campus, 1985. . Introduo a sistema de banco de dados. 8. ed. Rio de Janeiro: Campus, 1990. FILHO,Trajano Leme. Metodologia de desenvolvimento de sistema.So Paulo: Axcel, 2003.

42

UNIDADE 2

Preparando o ambiente de banco de dados


Objetivos de aprendizagem
Aprender a instalar e configurar uma ferramenta computacional de banco de dados. Executar comandos de criao e manipulao de banco de dados. Converter um script SQL em um banco de dados.

Sees de estudo
Seo 1 Critrios para escolha da ferramenta de banco
de dados.

Seo 2 Carregando o MySQL. Seo 3 Testando a ferramenta de banco de dados. Seo 4 Executando o aplicativo de banco de dados. Seo 5 Comandos bsicos do MySQL. Seo 6 Convertendo o script em um banco de dados.

Universidade do Sul de Santa Catarina

Para incio de conversa


Depois de conhecer um pouco sobre o processo de anlise e modelagem de um sistema computacional. Nessa unidade voc vai aprender a preparar o ambiente no seu computador para o desenvolvimento de um banco de dados. At o momento voc no precisou se preocupar com isso. O processo de anlise representa a preparao para as atividades de implementao e implantao do sistema, sem se preocupar com detalhes de linguagem de programao, banco de dados e equipamentos utilizados. A partir desta unidade voc ir instalar e congurar um sistema de gerenciamento de banco de dados para implementao do modelo de banco de dados criado na unidade anterior, que resultou num script em SQL. Para isso, ser necessrio que voc se lembre de alguns comandos em SQL j estudados em outras disciplinas, alm de necessitar muita ateno, pois a criao de um banco de dados cheia de particularidades. Acredito que voc ir gostar muito desta unidade, pois uma unidade bem prtica, na qual voc colocar em uso os seus conhecimentos. Ento, vamos praticar!

SEO 1 Critrios para a escolha da ferramenta de banco de dados


A seleo da ferramenta de banco de dados uma tarefa complexa, pois existem vrias ferramentas disponveis no mercado atual, principalmente para os especialistas que no possuem muita experincia nessa rea de atuao. Para um leigo no assunto, as ferramentas podem parecer semelhantes, com as mesmas garantias de funcionamento, dicultando ainda mais a escolha.

44

Banco de Dados II

Independentemente das caractersticas do produto, o mais importante garantir que a ferramenta escolhida atenda as necessidades do cliente e garanta a integridade dos dados. A escolha da ferramenta deve se adequar aos resultados da anlise do sistema. De forma resumida, uma ferramenta de banco de dados deve ter as seguintes caractersticas: aceitar como linguagem de manipulao e de denio de dados o SQL padro ANSI, que internacional; permitir a denio de regras de integridade, principalmente de integridade referencial, as chaves estrangeiras; possibilitar portabilidade em diferentes plataformas como: Linux e Windows; trabalhar na arquitetura cliente-servidor; disponibilizar mecanismos que permitam manter o acesso ao banco de dados mesmo em caso de falha no dispositivo de armazenamento. Cada ferramenta tem sua verso e a cada nova verso novos recursos, que facilitam a criao do banco de dados, so adicionados. Atualmente, uma caracterstica muito importante tem sido agregada a essas ferramentas, a disponibilidade sem custo algum - as chamadas ferramentas de cdigo aberto. Entretanto, tal gratuidade no pode ser a principal razo para se escolher a ferramenta desejada. Retomemos o projeto da escola Sabe Tudo. Para avaliar a ferramenta que ser utilizada nesse projeto, um fator importante dever ser considerado, a necessidade de se criar um produto de baixo custo. Desta forma, o projeto utilizar uma ferramenta de cdigo aberto, chamada MySQL.

Unidade 2

45

Universidade do Sul de Santa Catarina

Nas prximas sees, voc far o acesso ferramenta MySQL pela internet, baixar essa ferramenta e executar o processo de instalao e congurao da mesma.

SEO 2 Carregando o MySQL


Para desenvolver o projeto da escola Saber Tudo, ser usado o sistema de banco de dados chamado MySQL, pois seu conjunto de recursos oferecidos suciente para o desenvolvimento do projeto. A seguir, so apresentados os passos para baixar o instalador da ferramenta MySQL. Para exemplicar, utilize como base a verso para o sistema operacional Windows.

A ferramenta pode ser acessada em <www.mysql.com/>.

Baixando o MySQL
1. Acesse o endereo de internet: <www.mysql.com>. 2. Com a pgina carregada, acesse o link: Developer Zone. Este link especco para os desenvolvedores de softwares com acesso a banco de dados; 3. A verso mais atual da ferramenta MySQL 5.1, porm ser utilizada a verso 5.0 por ser uma verso mais estvel e de tamanho menor para ser baixado pela internet. Para iniciar o processo clique no link MySQL 5.0, que est localizado logo no incio da pgina.

46

Banco de Dados II

Veja a imagem a seguir:

FIGURA 2.1 - LINK PARA DOWNLOAD DA FERRAMENTA DE BANCO DE DADOS

4. Na pgina que se abre, procure pela verso para o sistema operacional Windows. Localizando o link para essa verso, clique na palavra download do arquivo Windows Essentials para iniciar o processo de download. Veja a imagem a seguir:

FIGURA 2.2 - LINK PARA DOWNLOAD DA VERSO 5.0 PARA WINDOWS

5. Na janela que se abre, clique em Salvar:

FIGURA 2.3 - INICIANDO O PROCESSO DE DOWNLOAD DA VERSO 5.0

Unidade 2

47

Universidade do Sul de Santa Catarina

6. Especique a pasta para armazenamento do arquivo e clique em salvar:

FIGURA 2.4 - ARMAZENANDO O ARQUIVO DE INSTALAO NO COMPUTADOR

Agora que o arquivo j foi baixado para sua mquina, a prxima tarefa instalar o programa.

Passos para fazer a instalao


1. Localize o arquivo armazenado no seu computador.

FIGURA 2.5 - ARQUIVO DE INSTALAO DO MySQL

2. D um duplo clique no arquivo mysql-essential-5.0.18win32 para iniciar a instalao. Na janela que se abrir clique no boto Executar.

48

Banco de Dados II

Veja abaixo:

FIGURA 2.6 - INCIO DA INSTALAO DO MySQL 5.0

Com isso, o processo de instalao se iniciar e lhe sero apresentadas algumas telas de congurao.

Passos para cada tela


1. Tela de apresentao clique no boto Next.

FIGURA 2.7 - TELA DE APRESENTAO

2. Tela de Setup selecione a opo Typical e clique no boto Next.

Unidade 2

49

Universidade do Sul de Santa Catarina

FIGURA 2.8 - TELA DE SETUP

3. Tela de incio da instalao clique no boto Install.

FIGURA 2.9 - TELA DE INCIO DA INSTALAO

4. Tela de assinatura selecione Skip Sign-Up e clique em Next.

FIGURA 2.10 - TELA DE ASSINATURA

50

Banco de Dados II

5. Tela de encerramento clique no boto Finish.

FIGURA 2.11 - TELA DE ENCERRAMENTO

Bem, com mais essa etapa o banco de dados j esta instalado, faltando apenas a congurao do nome de usurio e senha de acesso.

Passos para a congurao


1. Tela de congurao clique no boto Next.

FIGURA 2.12 - TELA DE CONFIGURAO

Unidade 2

51

Universidade do Sul de Santa Catarina

2. Tela de servidor clique no boto Next.

FIGURA 2.13 - TELA DE SERVIDOR

3. Tela de tipo de uso clique no boto Next.

FIGURA 2.14 - TELA DE TIPO DE USO

52

Banco de Dados II

4. Tela de congurao do servidor clique no boto Next.

FIGURA 2.15 - TELA DE CONFIGURAO DO SERVIDOR

5. Tela de espao em disco clique em Next.

FIGURA 2.16 - TELA DE ESPAO EM DISCO

Unidade 2

53

Universidade do Sul de Santa Catarina

6. Tela de conexes clique no boto Next.

FIGURA 2.17 - TELA DE CONEXES

7. Tela de TCP/IP clique no boto Next.

FIGURA 2.18 - TELA DE TCP/IP

54

Banco de Dados II

8. Tela de congurao do MySQL como um servio do Windows clique no boto Next.

FIGURA 2.19 - MYSQL COMO SERVIO DO WINDOWS

9. Congurao de senha de acesso na caixa New root password edite a senha virtual. Na caixa Conrm repita a palavra virtual. Essa ser a senha de acesso ao MySQL. Aps editar a palavra virtual, clique no boto Next.

FIGURA 2.20 - TELA DE SEGURANA

Unidade 2

55

Universidade do Sul de Santa Catarina

10. Tela de nalizao clique no boto Execute para realizar as conguraes e por m clique em Finish para encerrar todo o processo de congurao.

FIGURA 2.21 - TELA DE ENCERRAMENTO DA INSTALAO E CONFIGURAO

SEO 3 Testando a ferramenta de banco de dados


Agora que a instalao foi realizada, voc ter um contato mais direto com essa ferramenta. Para vericar a instalao realizada anteriormente, clique no boto Iniciar, da barra de tarefas do Windows, um novo grupo de programa dever ser adicionado, conforme mostra a imagem a seguir.

FIGURA 2.22 - GRUPO DE PROGRAMAS DO MYSQL

56

Banco de Dados II

A sua interao com a ferramenta MySQL ser feita por meio do programa MySQL Command Line Cliente, que representa o editor de comando em SQL que sero interpretados pelo sistema de gerenciamento do banco de dados. Para acessar esse aplicativo basta clicar na opo MySQL Command Line Cliente do grupo de programas do MySQL. Veja a tela que aparecer:

FIGURA 2.23 - TELA DE ACESSO AO MYSQL COMMAND LINE CLIENTE

Nesse caso, necessrio que voc informe a senha utilizada na instalao do programa para poder acessar o aplicativo. Para padronizar a instalao, solicitei que fosse informada a senha virtual, sendo assim, basta voc escrever virtual e pressionar a tecla enter. A tela de entrada ao MySQL Command Line Cliente pode ser vista a seguir.

FIGURA 2.24 - EDITOR DE COMANDOS DO MYSQL COMMAND LINE CLIENTE

Unidade 2

57

Universidade do Sul de Santa Catarina

SEO 4 Executando o aplicativo de banco de dados


Bem, agora que voc est com tudo pronto, hora de comear. Nesta seo voc usar alguns comandos bsicos da ferramenta MySQL, que so essenciais para a criao e manipulao do banco de dados para o projeto da escola Sabe Tudo. Para facilitar o uso do MySQL, crie um atalho para o aplicativo MySQL Command Line Client na rea de trabalho. Caso voc no se lembre de como fazer isso, siga o modelo apresentado abaixo: 1. Abra o grupo de programas do MySQL no Windows clicando o boto Iniciar.

FIGURA 2.25 - GRUPO DE PROGRAMAS DO MYSQL

2. Clique com boto da direita sobre a opo MySQL Command Line Client para que aparea o seguinte menu suspenso:

FIGURA 2.26 MENU DE PROPRIEDADES DO WINDOWS

58

Banco de Dados II

3. Clique na opo Criar Atalho:

FIGURA 2.27 - TELA DE ATALHO CRIADO

4. Com o mouse, arraste o atalho MySQL Command Line Client (2) para rea de trabalho:

FIGURA 2.28 - CONE DE ATALHO CRIADO NA REA DE TRABALHO

Muito bem, pelo atalho ca mais prtico para voc executar o aplicativo MySQL Command Line Client, que ser usado vrias vezes nesta unidade e em outras atividades que sero executadas mais frente.
Lembre-se que sempre que voc executar a chamada do aplicativo acima, ser solicitado a senha de acesso, que foi padronizada como virtual.

Para comear a interagir com esse aplicativo, clique no atalho criado anteriormente e, na tela que se abre, digite a senha de acesso e pressione a tecla Enter. No se assuste com esta tela preta, sem graa. Na verdade, essa tela representa o editor de comandos do MySQL e ser muito utilizada por voc. Esse editor formado por um cursor que indica a linha atual de edio, representada pelo smbolo mysql>. A partir deste cursor voc escrever o comando que deseja executar, seguido de um ponto e vrgula (;). Para executar o comando, basta pressionar a tecla Enter.

Unidade 2

59

Universidade do Sul de Santa Catarina

Veja o organograma abaixo:


GRFICO 2.1 - SEQNCIA DE EXECUO DOS COMANDOS SQL NO MYSQL COMMAND LINE CLIENT

SEO 5 Comandos bsicos do MySQL


Agora que voc j sabe como executar o editor de comandos do MySQL, est mais do que na hora de comear a praticar, certo? Nesta seo voc ter um contato com comandos bsicos para a interao entre usurio e MySQL e que so essenciais para que voc consiga criar um banco de dados sicamente. O ideal que voc pratique os comandos diretamente no editor do MySQL e acompanhe os seus resultados com os que so apresentados aqui na forma de imagens capturadas da mesma ferramenta.

60

Banco de Dados II

Lembre-se que a tarefa de programar requer um pouco de pacincia e muita concentrao, principalmente quando o resultado esperado no alcanado. Mas, o mais importante que estou nesta caminhada com voc. No primeiro comando, voc ir vericar qual o usurio que est conectado ao banco de dados. Essa a forma pela qual o sistema de gerenciamento de banco de dados identica o usurio junto s suas funcionalidades o que ele ir disponibiliza.

Comando Select User


Esse comando apresenta na tela o nome do usurio administrador do banco de dados e o servidor do banco de dados. Como a instalao que foi realizada por voc, seguindo o padro apresentado por mim, foi feita num banco de dados local, a sada do comando ser: root@localhost. Para executar o comando, ao lado do prompt mysql> edite o comando select user(); seguido de um ponto e vrgula e pressione a tecla Enter. Veja a seguir.

FIGURA 2.29 - RESULTADO DO COMANDO SELECT USER

Os comandos podem ser escritos em maisculas ou minsculas, sem distino pelo aplicativo MySQL.

Comando Show DataBases


Cada conjunto de tabelas do MySQL pode, e deve, ser organizado em banco de dados, chamado de DataBases. Cada DataBase representado por um nome.

Unidade 2

61

Universidade do Sul de Santa Catarina

Na instalao do MySQL, alguns DataBases j so instalados. Para vericar quais so esses bancos de dados, digite o comando: Show Databases; e pressione a tecla Enter. O resultado deve ser:

FIGURA 2.30 - RESULTADO DO COMANDO SHOW DATABASES

Comando Use
O acesso ao database realizado por meio do comando Use seguido do nome do DataBase, ou seja, a sintaxe do comando :
Use Nome do DataBase ; <enter>

Veja a seguir o comando para acesso ao DataBase chamado mysql: Use MySQL;

FIGURA 2.31 - RESULTADO DO COMANDO USE MySQL

Comando Select DataBase


Para visualizar o DataBase atual, que est sendo usado, voc executou o comando Select DataBase (). O resultado a apresentao do nome do banco de dados em uso.

62

Banco de Dados II

Veja a seguir.

FIGURA 2.32 - RESULTADO DO COMANDO SELECT DATABASE

Comando Show Tables


Para visualizar as tabelas que compem um determinado DataBase, deve-se executar o comando Show Tables, da seguinte forma: Show Tables; seguido de Enter. Veja abaixo o resultado desse comando, listando as tabelas do DataBase MySQL, uma vez que o comando anteriormente executado foi use mysql.

FIGURA 2.33 - RESULTADO DO COMANDO SHOW TABLES

Unidade 2

63

Universidade do Sul de Santa Catarina

Comando Create DataBase


O comando Create DataBase cria um banco de dados dentro do MySQL. A criao de um DataBase fundamental para a organizao das tabelas que sero manipuladas por um software. A conexo do banco de dados com um sistema computacional realizada por meio do DataBase, que por sua vez, disponibiliza um conjunto de tabelas que podem ser manipuladas. Veja a representao a seguir:

FIGURA 2.34 - REPRESENTAO DO ACESSO S TABELAS DE UM DATABASE

Para criar um DataBase deve-se executar o comando create DataBase, com a seguinte sintaxe:
create DataBase Nome_do_DataBase;

64

Banco de Dados II

Para exemplicar, vou criar o DataBase chamado SabeTudo, que dever representar o banco de dados para o software da escola Sabe Tudo, proposto na unidade anterior. Veja como simples a sintaxe:

FIGURA 2.36 - RESULTADO DO COMANDO CREATE DATABASE SABETUDO;

Para listar os DataBases existentes, voc pode executar o comando show DataBases:

FIGURA 2.37 - RESULTADO DO COMANDO SHOW DATABASES;

Voc pode notar que foi acrescentado o DataBase chamado sabetudo lista de DataBases do MySQL. A partir deste momento, todas as regras e tabelas sero criadas dentro do DataBase chamado SabeTudo, como forma de organizao das informaes referentes ao software que ser implementado. Vale salientar que o nome do DataBase poderia ser qualquer um, porm a escolha pelo nome SabeTudo tem a nalidade de associar o banco de dados ao problema que ser solucionado posteriormente. Como o DataBase criado, o prximo passo criar as tabelas relacionais que faro parte deste banco de dados. A criao das tabelas se baseia nos comandos de denio de dados do SQL, que so basicamente: Create Table, Drop Table e Alter Table.

Unidade 2

65

Universidade do Sul de Santa Catarina

Antes de criar este conjunto de tabelas, vou reapresentar o modelo que foi criado na unidade anterior, que inclusive foi transformado em um script de banco de dados. Veja novamente o modelo proposto para o software da escola SabeTudo:

FIGURA 2.37 - MODELO DE DADOS COMPLETO

Assim como o modelo de dados proposto deve ser relembrado, importante relembrar tambm o script de banco de dados que cria sicamente esse modelo. Esse script possui a sintaxe de criao de cada uma das tabelas, com os nomes e tipos de cada campo, com suas regras de chave primria e chave estrangeira.

66

Banco de Dados II

A principal nalidade do script ter, em um nico arquivo, os comandos que criam as tabelas de um DataBase, de forma organizada e simples. Veja o script de criao das tabelas anteriores:

#-- Script de Criao das Tabelas #-- Remove as Tabelas DROP TABLE IF EXISTS ALOCACOES; DROP TABLE IF EXISTS MATRICULAS; DROP TABLE IF EXISTS ALUNOS; DROP TABLE IF EXISTS TURMAS; DROP TABLE IF EXISTS PROFESSORES; #-- Criar a Tabela de Alunos CREATE TABLE ALUNOS ( Matricula Nome Data_Nascimento Idade CPF RG_Identidade Nome_Pai Nome_Mae Endereco Numero Cidade Estado Bairro Telefone Celular Chamarpor Alergia Grupo_Sangue Doador PRIMARY KEY ); #-- Criar a Tabela de Professores CREATE TABLE PROFESSORES Codigo Nome Data_Nascimento ( Int(4) NOT NULL, Varchar(40) NOT NULL, Date NOT NULL ,
SEGUE

Int(11) NOT NULL, Varchar(40) NOT NULL, Date NOT NULL, Int(4) NOT NULL, Varchar(14), Varchar(20), Varchar(40) NOT NULL, Varchar(40) NOT NULL, Varchar(50) NOT NULL, Int(4) NOT NULL, Varchar(35) NOT NULL, Char(2) NOT NULL, Varchar(40) NOT NULL, Varchar(30), Varchar(30), Varchar(30), Varchar(30), Varchar(10), Int(4), ( Matricula )

Unidade 2

67

Universidade do Sul de Santa Catarina

Idade CPF RG_Identidade CTPS Graduacao Estado_Civil Filhos Endereco Numero Cidade Bairro Estado Telefone Celular Grupo_Sangue Doador PRIMARY KEY ); #-- Criar a Tabela de Turmas CREATE TABLE TURMAS ( Codigo_Turma Descricao Grau Serie Turno PRIMARY KEY ); #-- Criar a Tabela de Matrculas

Int(4) NOT NULL, Varchar(14) NOT NULL , Varchar(20) NOT NULL, Varchar(20) NOT NULL, Varchar(30) NOT NULL, Varchar(25) NOT NULL, Int(4) NOT NULL, Varchar(50) NOT NULL , Int(4) NOT NULL, Varchar(35) NOT NULL, Varchar(30) NOT NULL , Char(2) NOT NULL, Varchar(25) NOT NULL, Varchar(25), Varchar(10), Int(4), ( Codigo )

Int(4) NOT NULL, Varchar(30) NOT NULL, Int(4) NOT NULL, Int(4) NOT NULL, Char(1) NOT NULL, ( Codigo_Turma )

CREATE TABLE MATRICULAS ( Mat_Aluno Int(11) NOT NULL, Cod_Turma Int(4) NOT NULL, Valor Float(9,2) NOT NULL , Data Date NOT NULL, PRIMARY KEY (Mat_Aluno,Cod_Turma), FOREIGN KEY(MAT_ALUNO) REFERENCES ALUNOS(MATRICULA), FOREIGN KEY(COD_TURMA) REFERENCES TURMAS(CODIGO_TURMA) );

68

Banco de Dados II

#-- Criar a Tabela de Alocaes CREATE TABLE ALOCACOES ( Codigo_Professor_Aloca Int(4) NOT NULL , Codigo_Turma_Aloca Int(4) NOT NULL , PRIMARY KEY ( Codigo_Professor_Aloca,Codigo_Turma_Aloca ), FOREIGN KEY (CODIGO_PROFESSOR_ALOCA) REFERENCES PROFESSORES(CODIGO), FOREIGN KEY (CODIGO_TURMA_ALOCA) REFERENCES TURMAS(CODIGO_ TURMA) );

SEO 6 Convertendo o script em um banco de dados


O objetivo da converso de um script em um banco de dados evitar que o especialista em banco de dados edite um a um o cdigo de criao das tabelas. Isso no estaria errado, funcionaria da mesma forma, porm seria mais trabalhoso.

O ideal, portanto, executar o script na ferramenta de banco de dados.

Para converter esse script em um banco de dados, voc deve executar os passos seguintes. 1. Em um editor de texto, como bloco de notas do Windows, edite o script criado na unidade anterior, sem alterao alguma.

Unidade 2

69

Universidade do Sul de Santa Catarina

FIGURA 2.38 - SCRIPT EDITADO NO BLOCO DE NOTAS

2. Clique na opo para salvar o arquivo. Redirecione o salvamento para pasta: C: \Arquivos de programas\MySQL\MySQL Server 5.0\bin. No formulrio Salvar Como, na caixa de edio Nome do arquivo edite ScriptSabeTudo.sql e na opo Salvar como Tipo selecione a opo Todos os Arquivos (*.*). Veja a gura a seguir:

FIGURA 2.39 - SALVANDO O SCRIPT DE CRIAO DO BANCO DE DADOS

70

Banco de Dados II

3. Com o script salvo, o prximo passo execut-lo dentro do MySQL. Para isso, carregue o programa MySQL Command Line Client. Caso o mesmo no esteja aberto. 4. Pelo comando Use, entre no banco de dados SabeTudo, executando o comando use sabetudo.

FIGURA 2.40 - ENTRANDO NO DATABASE SABETUDO ;

5. Para executar o script, utilize o comando Source, da seguinte forma: Source ScriptSabetudo.Sql;

FIGURA 2.41 - RESULTADO DO COMANDO SOURCE;

6. Caso algum erro acontea, abra o arquivo ScriptSabeTudo. sql, corrija o erro, que normalmente de escrita, salve a alterao e execute novamente o comando source ScriptSabeTudo.Sql; 7. Para vericar se as tabelas foram criadas, execute o comando: show tables;

FIGURA 2.42 - TABELAS DO DATABASE SABETUDO

Unidade 2

71

Universidade do Sul de Santa Catarina

8. Para vericar a estrutura das tabelas criadas, recorra ao comando Describe, cuja sintaxe : desc nome_da_tabela. Para ver, por exemplo, a estrutura da tabela de alunos o comando : Desc alunos;

FIGURA 2.43 - ESTRUTURA DA TABELA DE ALUNOS

Com isso, voc j tem um bom caminho percorrido. O banco de dados est modelado e com as tabelas criadas sicamente. A prxima tarefa preparar o ambiente de programao que ser responsvel por implementar o software que far conexo com o banco de dados criado nessa etapa. Pronto para mais essa tarefa? Ento, at a prxima unidade!

Sntese
Voc estudou nesta unidade todo o processo de download e instalao de uma ferramenta computacional de banco de dados. Por se tratar de uma atividade com vrias tarefas envolvidas, pode parecer complicado. Entretanto, medida que o processo passe a ser executado vrias vezes, tende a se tornar simples e objetivo. A instalao de uma ferramenta de banco de dados fundamental para a implementao de um sistema com armazenamento de dados, pois representar, sicamente no
72

Banco de Dados II

computador, toda a anlise do problema transformada em tabelas relacionais. Cada ferramenta de banco de dados possui um conjunto de comandos nicos, entretanto, a maioria deles deve atender um padro internacional de comandos, chamados de SQL-ANSI. Esses comandos so independentes do sistema de gerenciamento de banco de dados utilizado. A criao de um banco de dados se baseia nos comandos de denio de dados da SQL, que so, basicamente, Create Table, Drop Table e Alter Table. Como esses comandos podem sofrer alteraes a partir do modelo de dados especicado, ou alteraes no prprio andamento do projeto, o ideal converter as regras de criao do modelo de dados em um script SQL. A forma de carregar esse script na ferramenta de banco de dados pode mudar de um modelo para outro, porm a grande maioria deles possui essa funcionalidade. Uma ferramenta de banco de dados de baseia em dois grupos de comandos: comandos proprietrios seguem a sintaxe da ferramenta ; e comandos ANSI SQL seguem um padro internacional. Esses dois grupos abrangem uma gama muito grande de comandos, no entanto, no h necessidade de decor-los, uma vez que ao serem utilizados, se tornaro de fcil compreenso e utilizao.

Unidade 2

73

Universidade do Sul de Santa Catarina

Atividades de auto-avaliao
1. A utilizao de script para criao de banco de dados no obrigatria, no entanto, ele muito empregado pelos profissionais de banco de dados. Nesse caso, o script deve possuir algumas vantagens, voc poderia citar algumas?

2. A alterao do modelo de dados deve gerar, conseqentemente, uma alterao nos script de criao do mesmo, pois, caso contrrio, o modelo no representar fielmente o banco de dados utilizado. Essa afirmao est correta? Justifique a sua resposta.

3. O MySQL permite a execuo de um script de criao de tabelas de um banco de dados sem que tenha sido especificado antes qual o DataBase usado? Caso isso no seja possvel, como garantir que as tabelas sempre sero criadas no DataBase correto ao se executar o script?

74

Banco de Dados II

Saiba mais
Para aprofundar as questes abordadas nesta unidade, voc poder pesquisar em: NIEDERAUER, Juliano. PRATES, Rubens. MySQL Guia de referncia rpida. So Paulo: NovaTec, 2005. RANGEL, Alexandre. MySQL - projeto, modelagem e desenvolvimento. So Paulo: Alta Books, 2005. SUHRING, Steve. MySQL A Bblia. Rio de Janeiro: Campus, 2002. E consultando os sites:
http://www.mysql.com http://www.mysqlbrasil.com.br

Unidade 2

75

UNIDADE 3

Ambiente de programao Java


Objetivos de aprendizagem
Entender o papel da lgica de programao no desenvolvimento de sistemas computacionais. Compreender o funcionamento da linguagem de programao Java. Aprender a instalar e configurar o ambiente de programao Java.

Sees de estudo
Seo 1 Apresentando o Java. Seo 2 Instalando o Java.

Universidade do Sul de Santa Catarina

Para incio de conversa


Na unidade anterior voc pde instalar e congurar uma ferramenta de banco de dados responsvel pela manipulao e armazenamento dos dados. Bem, com isso voc venceu uma batalha, mas no venceu a guerra. Foi um grande passo rumo vitria, mas ainda falta preparar o ambiente para a linguagem de programao que ser usada na implementao do sistema com conexo a banco de dados que dever solucionar o problema da escola SabeTudo. Bem, imagine a tarefa de desenvolvimento de software como sendo em trs camadas: interface grca, regras de negcio e banco de dados. A camada de banco de dados, representada pelo banco de dados criado sicamente, est pronta. As outras duas camadas, a camada de regras de negcio - que representa as funcionalidades do sistema, ou seja, o que pode e o que no pode ser feito pelo usurio da aplicao - e a camada de interface grca - que representa as telas do sistema - ainda carecem de ser implementadas. Para a camada de banco de dados voc utilizou o aplicativo MySQL. Porm, para camada de interface e regras de negcio ser preciso utilizar uma linguagem de programao. Sendo assim, nesta unidade voc entrar no mundo da programao por meio da linguagem Java, principalmente no que se refere aos comandos de conexo com banco de dados. Preparado? Ento vamos luta.

78

Banco de Dados II

SEO 1 Apresentando o JAVA


Antes de apresentar a linguagem de programao Java, preciso que voc compreenda o que uma linguagem de programao.

Uma linguagem de programao uma metodologia de representao das instrues que devero ser executadas por um computador, obedecendo as suas regras de sintaxe e semntica. Essas instrues so normalmente chamadas de comandos da linguagem de programao. A sintaxe, de modo suscinto, significa a escrita de uma palavra e a semntica o significado da palavra.

O principal objetivo de uma linguagem de programao especicar de forma precisa como o computador dever : processar os dados informados por meio das operaes de entrada; armazenar os dados; apresentar os dados processados pelas operaes de sada.

A base de qualquer linguagem de programao a lgica.

A linguagem de programao apenas representa a ordem de processamento do computador a partir da lgica especicada pelo programador. Se a lgica estiver errada, o computador a executar da mesma forma, sem avaliar se o resultado esperado est dentro ou no do esperado. Sendo assim, um bom programador deve ter uma tima lgica de programao, sem se prender linguagem de programao utilizada, pois a linguagem uma formalizao da sua forma de solucionar o problema.

Unidade 3

79

Universidade do Sul de Santa Catarina

J o inverso no verdadeiro, um bom programador que domine vrias linguagens de programao no ter sucesso nas suas implementaes se a sua lgica de programao no estiver bem amadurecida.

O que o JAVA?
O Java uma linguagem de programao totalmente orientada a objetos, fabricada e distribuda pela Sun MicroSystems. Na dcada de 90, a linguagem Java foi projetada para ser usada na rea de eletrnica, principalmente no setor de eletrodomsticos, como concorrente da linguagem C. Mas, foi com a popularizao da internet que essa linguagem ganhou mercado. A principal caracterstica da linguagem Java a sua portabilidade. Um programa implementado em Java pode ser executado em qualquer plataforma, seja ela Windows ou Linux, sem alteraes. Para que essa portabilidade seja possvel, o Java funciona sob uma arquitetura chamada Java Virtual Machine, ou simplesmente JVM.

Como isso funciona?


Um programa escrito em linguagem Java, a partir de um editor de texto padro, salvo com a extenso .java. O compilador Java, tanto para a plataforma Windows como para a plataforma Linux, verica se o arquivo atende a todas as regras de sintaxe e semntica da linguagem. Se no houver nenhum erro, um novo arquivo gerado, porm com a extenso .class. A partir da gerao do arquivo .class, o sistema computacional est pronto para ser executado pela mquina virtual do Java, independentemente do sistema operacional do computador. como se existisse um computador dentro de outro computador.

80

Banco de Dados II

Dessa forma, o trabalho de executar o aplicativo Java criado realizado pela mquina virtual usando os recursos do computador no qual a mquina est instalada. Veja o diagrama a seguir:
GRFICO 3.11 - FUNCIONAMENTO DA LINGUAGEM JAVA

O que preciso para programar em Java


Para programar em Java o usurio precisa instalar na sua mquina um ambiente de desenvolvimento chamado de Java Development Kit, ou simplesmente, JDK, que pode ser copiado da internet sem custo algum, pois a linguagem de programao Java gratuita. A ferramenta Java pode ser encontrada nas plataformas J2E, J2ME e J2EE. Cada uma destas plataformas possui um conjunto de verses e recursos de desenvolvimento.

Unidade 3

81

Universidade do Sul de Santa Catarina

Para esta disciplina ser adotada a plataforma J2SE, na verso 5.0, por atender todas as necessidades do projeto da escola SabeTudo. Nas prximas sees voc ver como instalar e congurar o Java no seu computador.

SEO 2 Instalando o JAVA


A linguagem Java pode ser obtida no site do seu fabricante, pelo endereo: <www.sun.com>. Por meio desse endereo voc deve acessar a rea desejada, como Java, downloads e selecionar a plataforma j2e.

Um tanto trabalhoso, certo?


Para facilitar, voc pode acessar diretamente a ferramenta que ser utilizada nesta disciplina pelo link: <http://java.sun.com/ j2se/1.5.0/download.jsp>. Ao acessar este endereo, clique em JDK 5.0 Update 6. Veja a gura a seguir.

FIGURA 3.1 - LINK PARA DOWNLOAD DA VERSO J2SE, 5.0

82

Banco de Dados II

Na nova pgina que carregou, marque o item Required como Accept e depois clique na opo Windows O Line Installation Multi Language. Veja a imagem a seguir que representa esse processo:

FIGURA 3.2 - TELA DA INSTALAO DO PROGRAMA

Selecionando a verso para Windows


Na janela que se abriu, clique no boto Salvar.

FIGURA 3.3 - TELA DE AVISO DE SEGURANA

Carregando o instalador para o computador


Especique uma pasta para o armazenamento do arquivo e aguarde o download ser encerrado.

Unidade 3

83

Universidade do Sul de Santa Catarina

Aps instalar a ferramenta, necessrio realizar algumas conguraes no Windows. Essas conguraes recebem o nome de variveis de ambiente do sistema operacional, e so fundamentais para o perfeito funcionamento do Java. Com essas variveis de ambiente ajustadas, ser possvel voc executar o Java e a sua mquina virtual de qualquer diretrio do seu computador.

Como configurar as variveis de ambiente?

O processo simples. Primeiro voc precisa chegar ao formulrio de congurao das variveis de ambiente para depois adicionlas ou alter-las. Para chegar a esse formulrio, siga os passos seguintes: 1. Clique com o boto da direita no cone Meu Computador e selecione a opo Propriedades:

FIGURA 3.4 - PROPRIEDADES DO MEU COMPUTADOR

2. Na janela que se abre, selecione a aba chamada Avanado e clique no boto Variveis de Ambiente:

84

Banco de Dados II

FIGURA 3.5 - ACESSO S VARIVEIS DE AMBIENTE

3. Uma nova janela ser aberta para a alterao ou incluso das variveis de ambiente CLASSPATH e PATH:

FIGURA 3.6 - VARIVEIS DE AMBIENTE

Muito bem, agora voc precisa configurar as variveis de ambiente.

Unidade 3

85

Universidade do Sul de Santa Catarina

Comece pela varivel CLASSPATH, da seguinte forma: No quadro Variveis do Sistema, na parte inferior do formulrio de Variveis de Ambiente, procure e selecione a palavra CLASSPATH. Caso exista esta palavra, e voc a tenha selecionado, clique no boto Editar:

FIGURA 3.7 - ALTERANDO A VARIVEL CLASSPATH

No campo Valor da Varivel apenas inclua no nal da linha os smbolos: ; (ponto e vrgula) e . (ponto) e clique no boto OK. Dessa forma o campo Valor da Varivel car preenchido da seguinte forma: Qualquer coisa;. Caso a palavra CLASSPATH ainda no exista, clique no boto Incluir. A mesma janela acima ser apresentada, porm os campos Nome da Varivel e Valor da Varivel estaro em branco. No campo Nome da Varivel escreva CLASSPATH e no campo Valor da Varivel insira apenas o smbolo . (ponto) e clique no boto OK.

FIGURA 3.8 - INCLUINDO A VARIVEL CLASSPATH

86

Banco de Dados II

Para nalizar, voc precisa congurar a varivel PATH. Para isso, procure na lista de Variveis do Sistema a palavra PATH e caso seja encontrada, selecione-a. Aps, clique no boto Editar:

FIGURA 3.9 - CONFIGURAO DA VARIVEL PATH

Antes de editar o valor do campo Valor da Varivel, verique no Windows Explorer qual o caminho que o Java foi instalado. Por padro, o Java deve ter sido instalado na pasta: C:\Arquivos de programas\Java\jdk1.5.0_06. Os arquivos executveis do Java cam localizados na subpasta chamada Bin. So os arquivos javac.exe e java.exe. Esses arquivos devem ser localizados automaticamente pelo Windows na execuo do Java. Para que isso ocorra, preciso que voc insira no campo Valor da Varivel um ponto e vrgula (;) seguido do caminho: C:\Arquivos de programas\Java\jdk1.5.0_06\bin. Depois clique em OK. Caso a varivel PATH no tenha sido localizada, clique no boto Nova e inclua no campo Nome da Varivel a palavra PATH e no campo Valor da Varivel o caminho: C:\Arquivos de programas\ Java\jdk1.5.0_06\bin. Depois clique em OK. Para nalizar, clique no boto OK da janela de Variveis de Ambiente, voltando janela de propriedades do sistema. Clique novamente no boto OK para fechar esse ltimo formulrio.

Unidade 3

87

Universidade do Sul de Santa Catarina

Para vericar se as alteraes das variveis de ambiente foram feitas de forma correta, voc pode executar o Java de qualquer diretrio do Windows, da seguinte forma: clique no boto Iniciar do Windows; clique na opo Executar; no campo abrir escreva CMD e clique no boto OK. Ser aberta uma janela com o prompt do Windows;

FIGURA 3.10 - TELA DE PROMPT DO WINDOWS

Para testar o Java, digite Javac e pressione a tecla Enter:

FIGURA 3.11 - RESULTADO DO COMANDO JAVAC

88

Banco de Dados II

O comando Javac faz a compilao de um programa em Java. Quando o comando pode ser executado, isto significa que todas as configuraes esto corretas.

Para vericar a verso do Java instalado, digite no prompt do Windows a linha de comando: java version e pressione a tecla Enter:

FIGURA 3.12 - VERSO DO JAVA INSTALADO

Parabns! Com isso voc obtm a mais uma vitria! Agora voc j possui o ambiente de banco de dados instalado e configurado, bem como o ambiente de programao, o Java.

A base para a implementao do projeto para escola SabeTudo est quase completa, faltando apenas a conexo entre essas duas ferramentas, mas isso assunto para a prxima unidade.

Unidade 3

89

Universidade do Sul de Santa Catarina

Sntese
Nesta unidade voc estudou que a lgica de programao a base de qualquer linguagem de programao. A linguagem de programao uma formatao de comandos que sero executados pelo computador, seguindo as regras de sintaxe e semntica. Ela possui duas importantes propriedades: totalmente orientada a objetos e gratuita. Voc pde ainda interagir com todo o processo de baixar, instalar e congurar o ambiente de programao Java.

Atividades de auto-avaliao
1. O Java uma linguagem de programao atual, moderna e muito utilizada. O profissional que um especialista nessa linguagem de programao possui grandes chances de prosperar nesse mercado de trabalho. Sendo assim, o especialista nesta linguagem no precisa se preocupar, pois estar sempre garantido no mercado, dado que muito difcil uma linguagem de programao deixar de ser usada, sobretudo a linguagem Java. Essa afirmao est correta? Qual a sua opinio?

90

Banco de Dados II

Saiba mais
Para aprofundar as questes abordadas nesta unidade, voc poder pesquisar em: DEITEL, H.M.;DEITEL,P.J. Java: como programar. 6 ed. Ed. Pearson, 2005. HORSTMANN, Cay S. Big Java. Porto Alegre: Bookman, 2004.

Unidade 3

91

UNIDADE 4

Conectando o Java ao banco de dados


Objetivos de aprendizagem
Entender o processo de conexo entre uma linguagem de programao e uma ferramenta de banco de dados. Compreender o funcionamento do driver ODBC e JDBC. Instalar e configurar o driver de conexo do Java para MySQL. Criar uma fonte de dados de acesso ao banco de dados.

Sees de estudo
Seo 1 Driver de conexo ODBC. Seo 2 Driver de conexo JDBC. Seo 3 Criando uma Fonte de Dados.

Universidade do Sul de Santa Catarina

Para incio de conversa


Nas unidades anteriores voc pde preparar o ambiente de desenvolvimento de softwares, instalando duas ferramentas fundamentais: o sistema de gerenciamento de banco de dados ou simplesmente, banco de dados; e a linguagem de programao. Foram escolhidas duas ferramentas gratuitas, o MySQL e o Java, o que diminuir em muito o custo de produo do software para a escola SabeTudo. A partir de agora necessrio que voc compreenda como fazer uma aplicao escrita em Java e se conectar a um banco de dados, de forma segura e convel. Sendo assim, seja bem vindo ao mundo dos drivers de conexo!

SEO 1 Driver de conexo ODBC


Uma funcionalidade essencial em qualquer software a sua capacidade de se comunicar com um banco de dados, independentemente da linguagem de programao utilizada para implementao. A linguagem de programao possui uma sintaxe prpria e as ferramentas de banco de dados funcionam baseadas na linguagem SQL o que signica que essas duas tecnologias no conseguem conversar entre si. como se duas pessoas de idiomas diferentes comeassem a conversar sem que uma entendesse a outra. Seria um problema, no acha?
Sendo assim, necessrio que um interpretador faa o papel de converso entre eles, de forma que os dois possam se comunicar.

94

Banco de Dados II

Veja a imagem a seguir:

Figura 4.1: funcionamento de um Driver.

No caso da computao este interpretador recebe o nome de driver de conexo. Como cada ferramenta de banco de dados possui particularidades no seu funcionamento, normalmente o driver de conexo distribudo pelo prprio fabricante do banco de dados.
No caso do sistema operacional Windows, h um conjunto de drivers para conectividade a banco de dados, chamado de Open DataBase Connectivity (Padro Aberto de Conectividade), ou simplesmente ODBC.

A maioria dos drivers de conexo disponveis no ODBC para bancos de dados antigos, muitos at deixaram de ser usados, como: Dbase, Clipper. Sendo assim, para a maioria dos bancos de dados atuais necessrio que o usurio instale no seu computador o driver especco para a ferramenta que ele est utilizando. Como o projeto da escola SabeTudo se baseia no banco de dados MySQL e na linguagem de programao Java, preciso que voc instale na sua mquina o driver de conexo ODBC para o MySQL.
Para isso, acesse o link a seguir:

<http://dev.mysql.com/get/Downloads/MyODBC3/mysqlconnector-odbc-3.51.12-win32.zip/from/http://www.linorg.usp. br/mysql/>

Unidade 4

95

Universidade do Sul de Santa Catarina

Na tela que abrir, clique no boto Salvar e direcione o arquivo para uma pasta de sua preferncia. Agora que voc baixou o arquivo preciso instal-lo. Para isso, execute os passos seguintes: 1. Na pasta em que se encontra o arquivo baixado anteriormente, d um duplo clique no arquivo para execut-lo. 2. Na tela do Winzip que se abriu, d um clique no arquivo chamado Setup.exe para iniciar a instalao. Surgir uma tela, como a imagem a seguir:

Figura 4.2: Tela de Instalao do Driver ODBC MySQL.

3. Clique no boto Next e repita a mesma tarefa para todas as telas que seguem, at que aparea a seguinte tela:

96

Banco de Dados II

Figura 4.3: Tela de Instalao do Driver ODBC MySQL.

4. Clique no boto Install e aguarde o nal da instalao. Assim que a instalao terminar, clique no boto Finish para encerrar todo o processo. Pronto, o driver ODBC est instalado. A partir desse momento o sistema operacional Windows j reconhece o banco de dados MySQL como uma fonte de dados. Na prxima seo, voc precisar criar uma ponte entre esse driver e o driver especco para Java, chamado de JDBC. At l!

SEO 2 Driver de conexo JDBC


No caso do Java, os drivers ODBC recebem o nome de JDBC, ou seja, driver ODBC especco para Java. O driver JDBC o driver ODBC que permite a conexo entre um banco de dados e o programa escrito em Java. Seria o intrprete entre um sistema desenvolvido em Java e um banco de dados, possibilitando a comunicao entre eles.

Unidade 4

97

Universidade do Sul de Santa Catarina

Figura 4.4: Papel do driver de conexo JDBC.

O uso do JDBC apresenta algumas vantagens para a aplicao Java: maior portabilidade, facilidade de congurao e padronizao.

Como baixar e instalar um driver JDBC?

Com base na ferramenta que ser utilizada como banco de dados, acesse o site do fabricante e procure na rea de download pelo driver de conexo JDBC. Para facilitar, acesse o link: <http://dev.mysql.com/downloads/ connector/j/3.1.html>, para baixar o JDBC para MySQL. Esse driver ser usado por voc para conexo do software para a escola SabeTudo. Veja o site de download desse driver de conexo:

Figura 4.5: Site de download do driver de conexo do MySql.

98

Banco de Dados II

Para baixar o arquivo, clique no link Pick a Mirror, conforme a imagem a seguir:

Figura 4.6: Link para o driver de conexo do MySQL.

Na pgina que se abre, procure um Mirror do Brasil e clique na palavra Http, conforme a imagem a seguir:

Figura 4.7: Link para iniciar o download do arquivo.

Na janela que se abre, clique no boto Salvar e direcione o salvamento do arquivo para um diretrio de sua escolha.

Figura 4.8: Janela de salvamento do arquivo.

Unidade 4

99

Universidade do Sul de Santa Catarina

Esse arquivo no precisa ser instalado, basta apenas que ele seja copiado para o computador. Por enquanto s isso, apenas lembre-se do diretrio no qual voc salvou esse arquivo, pois na hora da implementao do programa ser necessrio informar o caminho ao Java. Como voc j realizou vrias tarefas, no quadro abaixo so apresentados todas as tecnologias que j foram instaladas por voc e a nalidade de cada uma delas, observe:
Quadro 4.1: as tecnologias.

Tecnologia
MySQL

Situao
Instalado e congurado, com a senha de acesso virtual. Instalado e com as variveis de ambiente CLASSPATH e PATH conguradas. Copiado para um diretrio do computador.

Finalidade
Armazenamento dos dados da aplicao para escola SabeTudo. Implementar a aplicao para escola SabeTudo. Conectar o banco de dados MySQL ao aplicativo implementado em JAVA.

Java

JODBC MySQL

Muito bom, com mais essa tarefa voc j est com quase todo ambiente preparado para o desenvolvimento da aplicao. Na prxima seo voc ver como criar uma fonte de dados ODBC, que, basicamente, signica informar ao sistema operacional algumas caractersticas do DataBase que ser acessado no MySQL tais como: Nome do DataBase acessado; Servidor no qual o DataBase est instalado; Nome do usurio administrador e a senha de acesso ao DataBase. Pode parecer complexo, mas voc ver que um processo bem simples.

100

Banco de Dados II

SEO 3 Criando uma fonte de dados


Aps a instalao e congurao da ferramenta de banco de dados necessrio que o programador registre no Windows qual o banco de dados ser utilizado e onde ele foi criado. Lembre-se que um banco de dados pode ter sido instalado em uma mquina local, no mesmo computador que estar rodando o programa feito em Java, ou em um servidor, que corresponde a um computador que ser acessado por vrios usurios. Esse registro de um banco de dados e seu DataBase no Windows (banco de dados criado sicamente na ferramenta de banco de dados) recebe o nome de Fonte de Dados. Para criar uma fonte de dados, clique no boto Iniciar do Windows e selecione Conguraes | Painel de Controle. Na janela de Painel de Controle h um cone chamado Ferramentas Administrativas, clique nesse cone para que seja aberta a seguinte janela:

Figura 4.9: Tela das ferramentas administrativas.

Para criar uma fonte de dados, clique no cone chamado Fontes de Dados (ODBC). Ser apresentada a seguinte janela na tela:

Unidade 4

101

Universidade do Sul de Santa Catarina

Figura 4.10: Administrador de fontes de dados ODBC.

Com o formulrio aberto, clique na aba chamada Fonte de dados de sistema, e depois clique no boto Adicionar. Na janela que se abriu, selecione o driver de conexo chamado MySQL ODBC 3.51 Driver, conforme a prxima gura:

Figura 4.11: Driver de conexo do MySQL.

Para nalizar, clique no boto Concluir. Ser aberta uma janela para criao da fonte de dados que ser usada pelo sistema desenvolvido para a escola SabeTudo. Nessa janela edite os seguintes valores:
102

Banco de Dados II

Figura 4.12: Tela do MySQL.

Na caixa de Apelido da Fonte De Dados, escreva AcessoDB. Este ser o nome usado por voc toda vez que quiser se referir a essa fonte de dados. Na caixa Servidor, insira a palavra localhost para identicar o acesso a um banco de dados local. Caso o banco de dados estivesse em outro computador voc informaria o nome ou o IP desse equipamento. Na caixa de Usurio, edite a palavra root, que correspode ao usurio administrador do MySQL. Na caixa de Senha, edite a palavra virtual que foi a senha usada por voc para a instalao do MySQL. Para fechar, selecione na caixa de DataBase o nome SabeTudo, que corresponde ao database criado sicamente no MySQL. Agora s clicar no boto OK. O ambiente est pronto para o seu devido uso. Lembre-se que a partir de agora, sempre que voc se referir fonte de dados AcessoDB, voc est na verdade acessando o DataBase chamado SabeTudo, atravs do usurio root e senha virtual.

Unidade 4

103

Universidade do Sul de Santa Catarina

Agora s comear a programar, portanto mos ao Java. Mas isso assunto para a prxima unidade!

Sntese
Nesta unidade voc pde estudar o processo de congurao e conexo de um banco de dados com um programa desenvolvido em linguagem Java. Para que a conexo seja realizada necessrio que o computador possua instalado o driver ODBC da ferramenta de banco de dados escolhida. Esse driver funciona como um interpretador entre o sistema e a ferramenta de banco de dados, de forma a permitir a comunicao entre ambos. Um banco de dados possui algumas propriedades, tais como: nome fsico, local de instalao, nome do usurio de acesso irrestrito e senha de acesso. Todas essas informaes podem ser substitudas por um apelido de conexo, que recebe o nome de fonte de dados. Sendo assim, a conexo entre o banco de dados MySQL e o Java precisa das seguintes tecnologias: Driver ODBC, Driver JDBC para o MySQL e uma Fonte de Dados registrada.

104

Banco de Dados II

Atividades de auto-avaliao
1. Uma caracterstica fundamental num driver de conexo com banco de dados a sua transparncia, ou seja, quanto maior for a sua abstrao para o programador, melhor a ferramenta. Sendo assim, pode-se afirmar que o programador e o especialista em banco de dados no precisam saber como funciona o driver, mas sim, saber como tirar o melhor proveito dele. Esta afirmativa correta? Justifique sua resposta.

2. O uso das fontes de dados uma forma de abstrao para o programador?

Unidade 4

105

Universidade do Sul de Santa Catarina

Saiba mais
Para voc se aprofundar nesses temas, consulte: MECENAS, Ivan. Fundamentos Swing e JDBC: 2 edio. So Pulo: Alta Books, 2005. ANSELMO, Fernando. Tudo que voc queria saber sobre JDBC. So Pulo: Visual Books, 2001.

106

UNIDADE 5

Ambiente de desenvolvimento integrado


Objetivos de aprendizagem
Compreender o que um Ambiente de Desenvolvimento Integrado. Instalar e configurar um Ambiente de Desenvolvimento Integrado. Compreender o processo de Compilao e Execuo de um programa em Java. Testar o ambiente Integrado JCreator.

Sees de estudo
Seo 1 Ambiente de desenvolvimento integrado (IDE). Seo 2 Ambiente de desenvolvimento integrado do
JCreator.

Seo 3 Testando o funcionamento do JCreator.

Universidade do Sul de Santa Catarina

Para incio de conversa


Bem, com o Java instalado e congurado, o ambiente de programao est pronto para ser usado. Porm voc pode ter a sua vida ainda mais facilitada com a utilizao de um ambiente de programao em Java bem amigvel, chamado JCreator. Esse ambiente, alm de fcil de usar, gratuito. Sendo assim, a partir de agora voc ter acesso a essa ferramenta de programao, como baix-la na internet, instal-la e congur-la. Alm disso, voc ver alguns comandos em Java especcos para conexo com banco de dados. Ento, at l.

SEO 1 Ambiente de desenvolvimento integrado (IDE)


O Java a linguagem de programao instalada por voc para o desenvolvimento do programa de software para escola SabeTudo. Isto j seria suciente para voc iniciar a implementao do programa. O processo seria bem simples, voc teria que escrever o seu cdigo em Java em um editor de texto padro, como o bloco de notas do Windows, salv-lo com a extenso Java e compil-lo. Ufa, parece muita coisa, mas no . Veja s, voc far os passos acima de forma prtica: 1. Para facilitar, crie uma pasta nos eu computador chamada BD2. Dentro deste diretrio crie uma pasta chamada Fontes. 2. Execute o programa bloco de notas do Windows.

108

Banco de Dados II

a. Com o editor aberto, edite o seguinte programa em Java:

Figura 5.1 - PRIMEIRO PROGRAMA EM JAVA

3. Salve o arquivo com o nome ola.java no diretrio BD2, na pasta Fontes. 4. Agora voc vai compilar este programa. Clique no boto Iniciar, escolha a opo Executar:

Figura 5.2 - RESULTADO DO COMANDO EXECUTAR

5. Na caixa Abrir, edite o comando CMD e clique no boto OK:

Figura 5.3 - TELA DE PROMPT DO WINDOWS

6. V para o diretrio em que voc salvou o arquivo ola.java. Algo como: C: \BD2\Fontes.

Unidade 5

109

Universidade do Sul de Santa Catarina

7. Execute o comando dir para ver se o arquivo ola.java est realmente nessa pasta.

Figura 5.4 - RESULTADO DO COMANDO DIR

8. Para compilar o programa, execute o comando javac seguido de um espao em branco em seguida o nome do arquivo que voc deseja compilar. Nesse caso, o comando ser: javac ola. java, no esquea de pressionar a tecla Enter aps editar o comando para que o mesmo seja executado.

Figura 5.5 - RESULTADO DA COMPILAO DO ARQUIVO OLA.JAVA

9. Opa, parece que ao compilar o programa em java, foi encontrado um erro na linha 4, na qual foi esquecido um ponto-e-vrgula. E agora? Simples, voc deve esta com o bloco de notas aberto, certo? Caso por algum motivo voc tenha fechado, execute-o novamente e abra o arquivo ola.java da pasta c:\BD2\Fontes.

110

Banco de Dados II

Na linha 4, desse texto, inclua um ; no nal da linha System.out. println (Testando o Java) e salve novamente o arquivo.

Figura 5.6 - O ARQUIVO OLA.JAVA CORRIGIDO

10. Ser preciso, portanto, recompilar o programa, na tela de prompt do Windows que ainda deve estar aberta, caso no esteja, repita os processos 5,6 e 7 descritos aqui. Na tela de prompt execute o comando javac ola.java.

Figura 5.7 - COMPILAO COM SUCESSO DO ARQUIVO OLA.JAVA

11. Como nenhuma mensagem foi apresentada na tela, a compilao ocorreu com sucesso. Sendo assim, o Java criou um arquivo chamado ola.class, que o resultado da compilao e corresponde ao arquivo que ser executado por voc. Se voc executar o comando dir, ver que agora existem dois arquivos chamados ola, sendo que um possui a extenso .java e outro .class.

Figura 5.8 - ARQUIVOS DA PASTA C: \BD2\FONTES

Unidade 5

111

Universidade do Sul de Santa Catarina

12. Para executar o programa (arquivo com extenso .class), na tela de prompt do Windows execute o comando java seguido de um espao em branco e o nome do arquivo com a extenso .class, no caso acima o comando car: java ola.

Figura 5.9 - RESULTADO DA EXECUO DO PROGRAMA OLA

Muito bem, como eu havia escrito anteriormente, pode parecer complicado, mas no , concorda? um processo bem trabalhoso, sendo que voc precisa trabalhar com a janela do prompt e do bloco de notas abertos simultaneamente. Acredito que seria uma tima notcia se eu te armasse que possvel facilitar em muito todo esse processo. Pois bem, antes de mais nada, feche o bloco de notas e a tela de prompt do Windows para que voc continue seu estudo. O Java possui vrios programas para edio de seu cdigo-fonte com a nalidade de facilitar o processo de edio e compilao. Poderia citar: NetBeans, Eclipse, JEdit, EditPlus e claro o JCreator. Todos eles so muito bons, alguns necessitam de um computador mais moderno, principalmente com boa capacidade de memria Ram e so proprietrios, ou seja, precisam ser comprados. No caso do JCreator, alm de muito fcil de usar, gratuito, ele muito leve, no precisa de um computador muito potente para ser executado. Todos esses facilitadores de implementao para o Java recebem o nome de IDE, que vem de Integrated Development Environment, que traduzido ca Ambiente de Desenvolvimento Integrado. Note que o IDE no uma linguagem de programao em Java, ele um complemento de desenvolvimento em Java. Se voc no tiver o Java instalado na sua mquina, o IDE de nada servir.

112

Banco de Dados II

A principal nalidade do IDE evitar que o usurio tenha que compilar o programa (por meio do comando javac) e executar o programa (por meio do comando java) em interfaces diferentes daquela na qual o programa esta sendo editado.

Basicamente um IDE deve permitir: compilar o programa, depurar os erros do programa e executar o programa.

Mas como baixar e instalar o IDE do JCreator? Isso voc ver na prxima seo.

SEO 2 Ambiente de desenvolvimento integrado do JCreator


O processo de instalao e congurao do JCreator bem simples, porm voc deve sempre se lembrar que para o devido funcionamento do IDE necessrio que o ambiente Java esteja instalado no computador. O primeiro passo baixar o instalador da ferramenta para o seu computador. Ao acessar a pgina de download da ferramenta, voc dever cadastrar os seus dados e principalmente o seu e-mail, pois voc receber via e-mail um link para baixar o programa de forma gratuita.

Para baixar o programa, acesse endereo de internet: <http://www.jcreator.com/downlod.htm>

Para iniciar o processo de download, clique no boto de download da verso JCreator LE V3.50 Freeware.

Unidade 5

113

Universidade do Sul de Santa Catarina

Na nova pgina, mude o idioma para portugus e cadastre os seus dados. Em seguida, clique no boto enviar.

Figura 5.10 - TELA DE CADASTRO DO JCREATOR

Ser enviado para o seu e-mail um link para baixar a ferramenta. No demorar para voc receber um e-mail com ttulo: Link para download de JCreator.

Acesse o endereo enviado para o seu e-mail, algo como: <http://www.jcreator.com/download.php?c=4 bf0b74481966caae21ee18d56f628a1>

Salve o arquivo de instalao, chamado Jcrea350.zip, em uma pasta de sua preferncia. Para instalar o programa, acesse a pasta na qual voc salvou o arquivo e d um duplo clique no arquivo Jcrea350.zip:

Figura 5.11 - TELA DE INSTALAO DO JCREATOR

114

Banco de Dados II

Para iniciar a instalao clique no arquivo Setup.exe:

Figura 5.12 - PROGRAMA DE INSTALAO DO JCREATOR

Para realizar a instalao do JCreator por completo, nas telas que se seguem execute as seguintes tarefas: 1. Na tela 1 - clique no boto Next; 2. Na tela 2 - selecione a opo I accept de igreement e clique no boto Next; 3. Na tela 3 - clique no boto Next; 4. Na tela 4 - clique no boto Next; 5. Na tela 5 - clique no boto Next; 6. Na tela 6 clique no boto Install; 7. Para nalizar, clique no boto Finish. Assim que voc clicou no boto Finish, o JCreator abriu uma janela de congurao, semelhante gura a seguir. Nessa janela clique no boto Next para que o JCreator associe as extenses de arquivos que podem ser editados nele.

Unidade 5

115

Universidade do Sul de Santa Catarina

Figura 5.13 - JANELA DE CONFIGURAO DO JCREATOR

Voc deve estar lembrado que aqui mesmo eu escrevi que o IDE um ambiente de complemento ao Java, sendo que o mesmo s funciona se o computador possuir um ambiente de programao em Java instalado. Pois bem, na prxima janela o JCreator identica em qual diretrio est instalado o ambiente de programao do Java. Caso o diretrio apresentado no seja o mesmo em que voc instalou o Java, voc pode alter-lo clicando no boto Browse, conforme a imagem que se segue:

Figura 5.14 - CONFIGURAO DO DIRETRIO PADRO DO JAVA

116

Banco de Dados II

Aps conrmar ou alterar o diretrio padro do Java, clique no boto Finish para encerrar o processo de congurao. Aps isso, o ambiente do JCreator ser aberto.

Figura 5.15 - AMBIENTE DE PROGRAMAO DO JCREATOR

Feche a janela de dicas que aparece no centro da tela. Caso voc no queira mais que essa janela seja apresentada a cada vez que voc abrir o JCreator, desmarque a opo Show tips on startup antes de fech-la. O uso desse ambiente muito semelhante maioria dos editores de texto, sendo assim, acredito que voc no ter muitas diculdades em us-lo. Mas isso assunto para prxima seo.

Unidade 5

117

Universidade do Sul de Santa Catarina

SEO 3 Testando o funcionamento do JCreator


Nesta seo voc utilizar o aplicativo JCreator. Para isso necessrio que o ambiente j esteja aberto, caso voc precise abrilo, faa pela opo do grupo de programas do Windows chamado JCreator LE, ou de forma mais rpida, pelo do cone na rea de trabalho.

Figura 5.16 - FORMAS DE ACESSO AO JCREATOR

Para avaliar a ferramenta e test-la, convido voc a editar o mesmo programa em Java feito na primeira seo desta unidade, no qual voc usou o bloco de notas e realizou a compilao por meio do prompt do Windows. Primeiro passo, voc dever informar ao JCreator que tipo de projeto deseja implementar. Sendo assim, clique na opo do Menu chamada File e escolha a opo New e em seguida novamente a opo File.

118

Banco de Dados II

Veja:

Figura 5.17 - CRIANDO UM NOVO ARQUIVO NO JCREATOR

Sero apresentados a voc cinco tipos de arquivos suportados pelo JCreator.

Figura 5.18 - TIPOS DE LINGUAGENS ACEITAS PELO JCREATOR

Selecione a opo Java File e clique no boto Next para a abertura da janela de congurao do nome do arquivo que ser editado.

Unidade 5

119

Universidade do Sul de Santa Catarina

Figura 5.19 - JANELA DE DECLARAO DO ARQUIVO EM JAVA

Primeira coisa, na caixa Location, pelo boto ao lado, direcione a criao do arquivo para o diretrio c: \BD2\Fontes, criado anteriormente por voc. Na caixa Name, edite o nome do arquivo como sendo ola2, depois s clicar no boto Finish. Como resultado, voc ter um campo de edio para o arquivo chamado ola2.

Figura 5.20 - REAS DO AMBIENTE JCREATOR

120

Banco de Dados II

Para editar o programa de teste, na rea de edio do CdigoFonte do Arquivo Atual, edite os seguintes comandos:

Figura 5.12 - PROGRAMA EM JAVA CHAMADO OLA2.JAVA

Agora que voc editou o programa clique no boto de Compile para compil-lo, ou faa por meio da opo de menu chamada Build, opo Compile File.

Figura 5.22 - FORMAS DE COMPILAR O PROGRAMA

Opa! O JCreator apresentou um erro de compilao, veja no nal da tela que o JCreator abriu uma nova janela, chamada Task List.

Figura 5.23 - APRESENTAO DE ERROS DE SINTAXE DO JCREATOR Unidade 5

121

Universidade do Sul de Santa Catarina

Mas o que diz esse erro?

A mensagem ; expected indica que na linha 4 do cdigo fonte faltou um ; . Para ir direto ao erro, d um duplo clique na mensagem de erro apresentada na Task List. No cdigo-fonte, inclua no nal da linha 3, System.out. println(Teste do Java Novamente !) um ponto-e-vrgula (;). Compile novamente o programa. Se tudo estiver correto a mensagem apresentada pelo Jcreator ser:

Figura 5.23 - RESULTADO DA COMPILAO COM SUCESSO

Para executar o programa, clique no boto de Execute ou apenas pressione a tecla F5.

Figura 5.24 - EXECUO DO PROGRAMA OLA2.JAVA

Com mais esse aplicativo instalado, voc est com todo ambiente para o desenvolvimento do programa para escola SabeTudo instalado, congurado e principalmente testado. A partir de agora hora de voc comear a colocar a mo na massa, codicando a soluo por meio da linguagem Java. Preparado para implementao? Ento, at a prxima unidade!

122

Banco de Dados II

Sntese
Nesta unidade voc teve contato com mais um aplicativo essencial para o especialista em banco de dados que deseja implementar um sistema computacional. Talvez seja o aplicativo mais utilizado por um programador, uma vez que o ambiente de desenvolvimento integrado responsvel por receber toda a codicao do programa em desenvolvimento, o que resumidamente se chama de cdigo-fonte. importante que voc se lembre que o IDE no uma linguagem de programao e s funciona se houver um ambiente de programao em Java instalado no computador. O aplicativo IDE um facilitador para o programador, que pode ou no utiliz-lo. Todo processo de compilao e execuo do programa realizado pelo IDE pode ser tambm executado pelo prompt do Windows por meio de comandos especcos, como Javac para compilar o programa e Java para executar o programa. Cabe a voc escolher qual a melhor forma de trabalho.

Unidade 5

123

Universidade do Sul de Santa Catarina

Atividades de auto-avaliao
1. O uso de ferramentas que auxiliam o profissional de banco de dados com interao com a anlise de sistemas e programao, as chamadas ferramentas CASE, podem facilitar o processo de implementao a tal ponto que no necessite de um especialista?

2. Seria correto afirmar que o processo de compilao de um arquivo em Java est diretamente relacionada ao cdigo-fonte e a execuo diretamente relacionado ao arquivo resultado da compilao chamado de .class?

124

Banco de Dados II

Saiba mais
<http://portaljava.com> <http://jcreator.com> <http://www.guj.com.br> <http://www.eclipse.org/> <http://www.netbeans.org/>

Unidade 5

125

UNIDADE 6

Comandos em Java para conexo com banco de dados


Objetivos de aprendizagem
Revisar os conceitos bsicos da programao em Java. Compreender a forma de conexo de uma aplicao ao banco de dados. Entender e praticar os comandos em Java que manipulam bancos de dados. Implementar regras de banco de dados por meio de classes em Java.

Sees de estudo
Seo 1 Conceitos fundamentais de programao em Java. Seo 2 Conexo ao banco de dados em Java. Seo 3 Comandos de manipulao de dados em Java.

Universidade do Sul de Santa Catarina

Para incio de conversa


Amigo de banco de dados, Agora chegou a hora de voc pr a mo na massa, no h mais como fugir da parte boa da construo de uma aplicao com conexo a banco de dados. Chegou o momento de voc comear a implementar algumas regras de negcio da aplicao que solucionar o problema da escola Sabe Tudo. Voc j est com o circo armado, ento hora do show. Acredito que voc j tenha tido contato com a linguagem de programao Java, mas mesmo assim, alguns comandos e conceitos sero revisados, o mais importante que voc poder interagir como novos comandos de conexo ao banco e de manipulao de dados. Mais do que isso, voc ir implementar essas funcionalidades usando a metodologia da programao orientada a objetos e poder relembrar alguns conceitos importantes dessa metodologia e, principalmente, coloc-los em prtica. Portanto, chega de papo, chegou a hora da codicao.

SEO 1 Conceitos fundamentais de programao em Java


Voc j teve o contato com a programao em Java por meio da disciplina de Programao Orientada a Objetos, porm necessria uma reviso de alguns conceitos importantes para o que vem pela frente. fundamental que voc sempre se lembre que o processo de programar independe da linguagem utilizada, sendo que o mais importante uma lgica de programao bem estruturada e organizada. Basicamente, programar abrange as seguintes etapas: analisar, codicar, compilar, depurar e executar.

128

Banco de Dados II

Mas o que cada uma dessas etapas?

Para responder essa pergunta veja a tabela a seguir.


Quadro 6.1 - ETAPAS DA PRAGRAMAO

Etapa
Analisar Codicar Compilar Depurar Executar

Funo
Converter a soluo em um algoritmo. Escrever a soluo lgica por meio de uma linguagem de programao. Vericar se o cdigo fonte atende as regras de semntica e sintaxe da linguagem utilizada. Corrigir os erros de sintaxe e semntica apresentados pelo processo de compilao. Fazer o programa rodar.

Por meio de um diagrama, o processo pode ser representado da seguinte forma:


Grfico 6.1 - ETAPAS DO PROCESSO DE PROGRAMAO

Unidade 6

129

Universidade do Sul de Santa Catarina

Com base nessas etapas, voc estudar o processo de codicao, que est diretamente relacionado com a linguagem de programao Java e sua estrutura de programao, sintaxe e semntica. O Java uma linguagem de programao totalmente orientada a objeto, sendo assim, cada programa implementado em Java visto como uma classe, ou seja, as regras de manipulao de um objeto. O escopo de um programa em Java :
class nome_da_classe { Atributos - privados; Mtodo Construtor com o mesmo nome da classe e pblico; Mtodos Modicadores pblicos; Mtodos Recuperadores pblicos; Mtodos das Regras de Negcio da Classe pblicos ou privados; Mtodo Main nas classes em que h um mtodo principal. }

Acredito que esse escopo j seja de seu conhecimento. Veja o exemplo a seguir:
import javax.swing.*; class caneta{ private String Modelo,Marca,CorTinta; private oat Preco; //-- Construtor public caneta(){ setModelo(); setMarca(); setPreco(0); setCorTinta(); } //-- Modicadores public void setModelo (String _Modelo) {Modelo = _Modelo;} public void setMarca (String _Marca) {Marca = _Marca;} public void setPreco (oat _Preco) {Preco = _Preco;} public void setCorTinta(String _Cor) {CorTinta = _Cor;}

130

Banco de Dados II

//-- Recuperadores public String getModelo() { return Modelo;} public String getMarca () { return Marca;} public oat getPreco() { return Preco;} public String getCorTinta() { return CorTinta;} //-- Regras de Negcio public void LerDados(){ setModelo(JOptionPane.showInputDialog(Informe o Modelo:)); setMarca (JOptionPane.showInputDialog(Informe a Marca:)); setPreco(Float.parseFloat(JOptionPane.showInputDialog(Preco:))); setCorTinta(JOptionPane.showInputDialog(Cor da Caneta:)); } public void ShowDados(){ JOptionPane.showMessageDialog(null,Dados da Caneta:\n + Modelo: + getModelo() + \n+ Marca : + getMarca() + \n+ Preo : + getPreco() + \n+ Cor: + getCorTinta()); } }

Essa classe implementa as regras de manipulao para um objeto do tipo caneta. O usurio do sistema s poder manipular essa caneta pelos mtodos pblicos, como o construtor, os modicadores, os recuperadores e os mtodos de regras de negcio.

Mas o que se ganha com isso?

Como a classe representa as regras de manipulao do objeto, a partir do momento que voc estrutura a sua classe, passa a ter total controle sobre a implementao, pois com certeza conhecer todas as formas de uso dos objetos resultantes da classe que voc criou.
Unidade 6

131

Universidade do Sul de Santa Catarina

Lembre-se que essa informao fundamental para voc que criou a classe, mas deve ser abstrada pelo usurio do sistema, pois para ele no importante saber como as classes funcionam ou como foram implementadas.

A classe acima pode ser executada?

A resposta no. A classe acima implementa as regras da classe caneta. Porm, essa classe no possui um mtodo principal, chamado de main, e nem inteno t-lo.

Mas como executar essa classe?

Para execut-la preciso que em outra classe em Java seja instanciado um objeto a partir dessa classe. Ou seja, em outra classe voc precisa criar um atributo do tipo caneta e a partir disso poder utiliz-lo por intermdio dos mtodos pblicos. Veja:
class usacaneta{ public static void main (String args[]){ //-- Criando um objeto do tipo caneta caneta MinhaCaneta = new caneta(); //-- Usando o objeto MinhaCaneta MinhaCaneta.LerDados(); MinhaCaneta.ShowDados(); //-- Sair do Programa System.exit(0); } }

132

Banco de Dados II

O atributo MinhaCaneta representa a classe caneta. Ao ser instanciado pelo comando new caneta(), o usurio poder utilizar o objeto vontade, desde que referenciando os mtodos pblicos. O resultado da execuo deste programa ser algo como:

Figura 6.1 - ENTRADA DOS DADOS POR MEIO DO MTODO LERDADOS()

Figura 6.2 - SADA DOS DADOS POR MEIO DO MTODO SHOWDADOS()

Note que para o usurio da classe caneta, ele nem precisa saber como foram implementados os mtodos LerDados e ShowDados, apenas precisa saber us-los. Antes de continuar, que tal voc editar as duas classes acima no JCreator, gravando-as no diretrio C:\BD2\Fontes. Depois s executar a classe usacaneta e ver os resultados na tela do seu computador.

Unidade 6

133

Universidade do Sul de Santa Catarina

Em resumo, podem-se tirar alguns comandos importantes da classe caneta, veja!


Quadro 6.2 - LINHAS DE COMANDO E SUAS FUNES

Linha de Comando

Funo
A importao dessa classe se faz necessria para o uso dos comandos JOptionPane.showInputDialog e JOptionPane.showMessageDialog. A denio do nome da classe deve ser o mesmo nome do arquivo .java. O mtodo construtor deve ter o mesmo nome da classe e deve ser pblico. Os atributos devem ser privados. Os mtodos modicadores, alm de pblicos, no retornam valor algum. Alm disso, sempre recebe um valor como parmetro. Os mtodos recuperadores, alm de pblicos, sempre retornam um valor que deve ser do mesmo tipo do atributo ao qual ele esta referenciado. Este mtodo nunca recebe parmetro. A entrada de dados via JOptionPane. showMessageDialog sempre retorna uma String. Sendo assim, foi necessrio converter um valor do tipo String para o tipo Float. Caractere especial para pulo de linha.

import javax.swing.*

class caneta public caneta private

public void

public String

Float.parseFloat

\n

Os comandos apresentados no quadro no so muito diferentes do que voc viu em Programao Orientada a Objetos. O que pode mudar a forma de representao dos comandos nas classes, mas o processo de codicao o mesmo, utilizando o que h de melhor na programao orientada a objetos. Na prxima seo voc incluir ao seu conhecimento em Java os comandos de conexo e manipulao de banco de dados.

134

Banco de Dados II

SEO 2 Conexo ao banco de dados em Java


A conexo com um banco de dados, por meio da linguagem Java pode ser dividida em trs processos distintos: conectar ao banco de dados; executar comandos com recuperao de dados Select; executar comandos sem recuperao de dados Insert, Update e Delete. Sendo que, se o primeiro processo no for realizado com sucesso, os demais no podem ser realizados. Veja o organograma a seguir:
Grfico 6.2 - FORMA DE ACESSO AO UM SOFTWARE COM CONEXO AO BANCO DE DADOS

Unidade 6

135

Universidade do Sul de Santa Catarina

A conexo com o banco de dados se d pela conexo JDBC, utilizando a classe chamada DriverManager, que poderia ser traduzido para administrador do driver. Essa classe pertence ao pacote java.sql e serve para: criar a conexo com o banco de dados; administrar o driver JDBC usado na conexo; controlar o acesso ao banco de dados via login; controlar a troca de informao entre o driver e a ferramenta de banco de dados. Como o DriverManager pertence ao pacote java.sql, sempre que voc for utiliz-lo dever incluir a linha import java.sql.* no cdigofonte da sua classe, pois esse no um pacote nativo do Java.
Lembre-se: a linguagem Java Case Sensitive, ou seja, maisculo diferente de minsculo. Sendo assim, a classe DriverManager reconhecida, j a classe drivermanager ser um comando no reconhecido pela linguagem.

Como usar a classe DriverManager?


A sintaxe do uso dessa classe bem simples, como a nalidade dessa classe especicamente a conexo com o banco de dados, os seus atributos se referem a dados como: nome da fonte de dados ODBC; nome do usurio; senha de acesso ao banco de dados. Para que a classe DriverManager receba esses valores, necessria a utilizao do mtodo getConnection().

136

Banco de Dados II

Assim a sintaxe de uso do DriverManager :


DriverManager.getConnection(nome da fonte de dados, usurio, senha);

Na qual: Nome da Fonte de Dados: String; Nome do Usurio: String; Senha: String; Os nomes do usurio e da senha de acesso seguem as regras da denio do banco de dados. No caso do banco de dados MySQL instalado por voc, seguindo as denies desta disciplina, possui o usurio chamado root e a senha virtual. O mtodo getConnection() retorna sempre um atributo do tipo connection, que pode ser fechado por meio do mtodo close(). A partir do momento que o banco de dados foi fechado, ele no pode mais ser manipulado, a no ser que uma nova conexo seja aberta por intermdio do getConnection(). Sempre que voc encerrar a aplicao, feche o banco de dados. Os comandos do getConnection() so sempre os mesmos, o que pode mudar so os parmetros de nome da fonte, usurio e senha. Sendo assim, a conexo com banco de dados poderia ser representada por uma classe como:
ConexaoDB - FonteDB: char - Usuario: char - Senha: char + Conectar() : boolean + Fechar(): void + Preparar(): void
Figura 6.3 - DIAGRAMA DA CLASSE DE CONEXO COM O BANCO DE DADOS EM JAVA

Unidade 6

137

Universidade do Sul de Santa Catarina

O prximo passo montar essa classe. Para isso, abra o JCreator. Clique em File, new File. Escolha o tipo de arquivo Java File. Nomeie o arquivo como ConexaoDB, salve-o na pasta c:\DB2\ Fontes. Edite o seguinte cdigo:

//--Importe de pacotes import javax.swing.*; import java.sql.*; class ConexaoDB{ private String FonteDB,Usuario,Senha; private Connection Conexao; //-- Construtor da Classe com Parmetros public ConexaoDB(String _FonteDB,String _Usuario,String _Senha){ setFonte (_FonteDB); setUsuario(_Usuario); setSenha (_Senha); } //--Modicadores public void setFonte (String _FonteDB) {FonteDB = _FonteDB;} public void setUsuario(String _Usuario) {Usuario = _Usuario;} public void setSenha (String _Senha) {Senha = _Senha;} public void setConexao(Connection _Conexao) {Conexao = _Conexao;} //-- Recuperadores public String getFonte (){return FonteDB;} public String getUsuario(){return Usuario;} public String getSenha (){return Senha;} public Connection getConexao(){return Conexao;} //-- Mtodo para conexo com banco de dados //-- Retorna verdadeiro oufalso para indicar se a conexo foi feita public boolean Conectar(){ boolean sucesso = true; String fonte = jdbc:odbc:+getFonte(); //-- Registro da Fonte de Dados try{ Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); // -- Conexo via ODBC setConexao(DriverManager.getConnection(fonte,getUsuario(),getSenha())); }

138

Banco de Dados II

catch(Exception e){ sucesso = false; } if (sucesso) JOptionPane.showMessageDialog(null, Conectou com Sucesso.); else JOptionPane.showMessageDialog(null, No Conectou.); return sucesso; } //-- Mtodo para fechar a Conexo public void Fechar(){ try{ getConexao().close(); } catch(Exception e){ JOptionPane.showMessageDialog(null,Problema ao Fechar o Banco. ); } } //-- Mtodo para prepara o banco de dados para receber // os comandos em SQL. public Statement PrepararComando(){ try{ return getConexao().createStatement(); } catch (Exception e) { JOptionPane.showMessageDialog(null, Erro de Comando); return null; } } }

Compile o arquivo, e caso apresente algum erro, compare o que voc fez com a listagem apresentada aqui. Vale lembrar que normalmente os problemas podem estar na digitao errada ou em algum smbolo que fora esquecido. Por isso, que tranqilo!

Mas para que serve essa classe?

Unidade 6

139

Universidade do Sul de Santa Catarina

Com base nessa classe, possvel se conectar a qualquer tipo de banco de dados, desde que sejam informados a fonte de dados ODBC, a senha e o usurio do banco de dados. Antes de apresentar mais uma classe, a classe de uso da classe ConexaoDB, vou detalhar o cdigo anterior, para que voc possa dominar a tecnologia de conexo com banco de dados em Java. Veja o quadro a seguir.
Quadro 6.3 - LINHAS DE COMANDO E SUAS FUNCIONALIDADES
Linha de comando Funcionalidade Pacote em Java para os comandos derivados de JOptionPane. Como: JOptionPane.showInputDialog e JOptionPane. showMessageDialog. Pacote Java para manipulao de banco de dados. Nome da classe criada deve ter o mesmo nome do arquivo em Java. Atributos da classe so sempre private. Construtor da classe ConexaoDB, recebendo como parmetro os valores da Fonte de Dados, usurio e senha. O nome da fonte de dados em Java identicada como jdbc:odbc: e em seguida o nome da fonte de dados que se deseja acessar. Carrega o driver que ser usado para conexo com o Java. Nesse caso, ser uma conexo via ODBC. Tenta fazer a conexo com o banco de dados a partir da fonte de dados, usurio e senha fornecidos. O mtodo setConexao() armazena no atributo Conexo o resultado da execuo do comando getConnection. Toda a operao de banco de dados em Java, obrigatoriamente deve ser protegida com tratamento de exceo try.. catch. Fecha o banco de dados. O mtodo getConexao() retorna a conexo que est aberta e o mtodo close() fecha. Por ser uma operao de banco de dados deve ser protegida por try e catch. O tipo de dado Statement representa as operaes que podem ser executadas pelo banco de dados. return getConexao().createStatement(); Sendo assim, o mtodo PrepararComando mantm o banco de dados em modo de espera, aguardando que algum comando em SQL seja passado para execuo.

import javax.swing.*;

import java.sql.*; class ConexaoDB private String FonteDB,Usuario,Senha; private Connection Conexao; public ConexaoDB(String_FonteDB,String _Usuario,String,_Senha) String fonte = jdbc:odbc:+getFonte(); Class.forName(sun.jdbc.odbc. JdbcOdbcDriver); DriverManager.getConnection(fonte,getUs uario(),getSenha())); setConexao(DriverManager.getConnection (fonte,getUsuario(),getSenha())); try{ } catch(Exception e){ }

getConexao().close();

140

Banco de Dados II

O mais importante que essas regras esto prontas, o que pode ser alterado o nome da fonte de dados, nome do usurio e da senha de acesso. Estes valores so passados para classe ConexaoDB no momento em que a mesma instanciada e a conexo ocorre na chamada do mtodo Conectar. Portanto, no h necessidade de reescrever este cdigo de conexo toda vez que for necessrio se conectar a um banco de dados.

Lembre-se que esse cdigo permite a conexo a qualquer tipo de banco de dados por meio da conexo via ODBC, basta que sejam informados os dados da conexo.

Mas como utilizar essa classe?


Agora vem o mais importante da orientao a objetos. Para utilizar a classe ConexaoDB o programador no precisa saber como que a mesma foi implementada, basta saber como instanci-la e us-la. Nesse caso, us-la, signica saber como instanci-la e como e quando executar os mtodos Conectar, Fechar e PrepararComando.

Simples no? Sendo assim, est na hora de voc utiliz-la!


Com o programa JCreator aberto, inclua mais uma classe ao seu projeto, clicando na opo de menu, File, new File, e escolha o tipo de arquivo. Nomeie o arquivo para usarConexao.java e salveo na pasta c:\DB2\Fontes.

Unidade 6

141

Universidade do Sul de Santa Catarina

Edite o seguinte cdigo para essa classe:


import java.sql.*; class usarConexao{ public static void main(String args[]){ boolean Conectou; ConexaoDB C = new ConexaoDB(AcessoDB,root,virtual); Conectou = C.Conectar(); if (Conectou) C.Fechar(); System.exit(0); } }

Execute o programa, o resultado dever ser algo como:

Figura 6.4 - RESULTADO DA EXECUO DA CLASSE USARCONEXAO

O prximo passo executar os comandos SQL a partir da conexo com o banco de dados, mas isso assunto para prxima seo.

142

Banco de Dados II

SEO 3 Comandos de manipulao de dados em Java


Com o banco de dados conectado, o prximo passo implementar os comandos de manipulao de dados, que so: Insert, Update, Delete e Select. A sintaxe destes comandos voc j deve conhecer, portanto, ir apenas revis-los.

Comando Insert
Comando em SQL para o cadastramento dos dados nas tabelas, deve obedecer s regras de chaves primrias, chaves estrangeiras e campos obrigatrios. Sua sintaxe:
Insert into Tabela(Nomes do Campos) values (Valores de cada campo);

Comando Update
Comando em SQL para atualizao dos dados nas tabelas, deve obedecer s regras de chaves primrias, estrangeiras e campo obrigatrios. O comando depende de um ltro para a realizao das alteraes, caso seja esquecida a condio de ltro, a alterao valer para todos os registros da tabela. Sua sintaxe:
Update Tabela set Campo = Valor where Condio;

Comando Delete
Comando em SQL para remoo de dados das tabelas, deve obedecer s regras de chaves estrangeiras. O comando depende de um ltro para a realizao das excluses, caso seja esquecida condio de ltro, a o comando exclura todos os dados da tabela. Sua sintaxe:
Delete from where Condio;

Unidade 6

143

Universidade do Sul de Santa Catarina

Comando Select
Comando em SQL para seleo de dados das tabelas, pode referenciar uma ou vrias tabelas do banco de dados, tendo a opo de ltrar, agrupar e ordenar os dados. Sua sintaxe:
Select Campos from Tabela where Condio Group by Campo Having Condicao Order by Campo;

Com relao ao Java, o que muda com base nesses comandos a forma pela qual o comando ser repassado para o banco de dados. Os comandos que no retornam valores, como Insert, Update e Delete so repassados ao banco de dados pelo mtodo executeUpdate() da classe Statement.

Para remover todos os dados da Tabela de Alunos, os comandos em Java seriam: Connection C = DriverManager.getConnection(fonte,usuario,senha); Statement s = C.createStatement(); s.executeUpdate(Delete from Alunos);

J o comando Select um comando de retorno de dados, sendo assim ele repassado ao banco de dados pelo mtodo executeQuery() da mesma classe Statement. Por exemplo, para listar todos os dados da Tabela de Alunos, os comandos em Java seriam:
Connection C = DriverManager.getConnection(fonte,usuario,senha); Statement s = C.createStatement(); s.executeQuery(Select * from Alunos);

144

Banco de Dados II

Como a diferena entre as duas formas de execuo dos comandos em SQL mnima, o ideal que se crie uma classe para conexo e envio de comandos para o banco dados. Assim como h uma classe que atende as necessidades de conexo com banco de dados, a classe ConexaoDB, necessria tambm uma classe para padronizao do envio de comandos ao banco de dados. Portanto, a partir desse ponto, voc vai comear a montar a classe de comandos em SQL. A estrutura da classe ser a seguinte:
Comandos SQL Con: ConexaoDB Conectou: boolean Resultado SQL: ResultSet + AbrirConexao ( ) + FecharConexao ( ) + ExecutarComando ( )
Figura 6.5 - DIAGRAMA DA CLASSE COMANDOSSQL

A seguir apresentado o cdigo que implementa essa classe:


import java.sql.*; import javax.swing.*; class ComandosSQL{ //--Atributos private ConexaoDB Con; private boolean Conectou; private ResultSet ResultadoSQL; //--Construtor public ComandosSQL(){ setConectou(false); setResultadoSQL(null); setConexaoDB(null); }
Atributos privados da classe. Note que o atributo Con faz uma composio classe ConexaoDB, implementada anteriormente. Importe dos pacotes para JOptionPane (swing) e DriveManager,executeUpdate e executeQuery (java.sql).

Construtor da classe. Deve ter o mesmo nome da classe.

SEGUE Unidade 6

145

Universidade do Sul de Santa Catarina

//--Modicadores public void setConectou (boolean _Conectou){Conectou = _Conectou;} public void setResultadoSQL(ResultSet _Resultado){ResultadoSQL = _Resultado;} public void setConexaoDB(ConexaoDB _ConexaoDB) {Con = _ConexaoDB;} //-- Recuperadores public boolean getConectou(){return Conectou;} public ResultSet getResultadoSQL(){return ResultadoSQL;} public ConexaoDB getConexaoDB() {return Con;}
Este mtodo fundamental para a execuo dos comandos em SQL. Ele abre o banco de dados a partir dos dados de fonte, login e senha.

//-- Usa a classe ConexaoDB para abrir o banco de dados public void AbrirConexao(String _Fonte,String _Usuario,String _Senha){ setConexaoDB(new ConexaoDB(_Fonte,_Usuario,_Senha)); setConectou(getConexaoDB().Conectar()); } //-- Fecha o banco de dados a partir da classe ConexaoDB public void FecharConexao(){ if (getConectou()){ getConexaoDB().Fechar(); } else{ JOptionPane.showMessageDialog(null,Banco de dados no estava aberto); } } //-- Executa o comando em SQL e armazena o resultado do comando quando //for um select. public void ExecutarComando(String ComandoSQL) throws SQLException{ if (getConectou()){ Statement s= getConexaoDB().PrepararComando(); if (ComandoSQL.indexOf(select) != -1 ){ setResultadoSQL(s.executeQuery(ComandoSQL)); } else{ setResultadoSQL(null); s.executeUpdate(ComandoSQL); } } else{ JOptionPane.showMessageDialog(null,Banco de Dados Fechado.); } } }

Fecha a conexo com banco de dados, desde que a abertura do banco tenha ocorrido com sucesso. O mtodo getConectou() informa se o banco esta aberto.

Este mtodo o ponto-chave desta classe. Ao executar um comando em SQL passado como parmetro, a classe verica primeiro se o banco de dados est aberto. Se estiver aberto, o prximo passo vericar se o comando contm a palavra select, se contiver, executado o mtodo executeQuery(), que retorna um ResultSet, seno executa um executeUpdate() que no retorna dados.

Compile a classe mostrada anteriormente e caso seja encontrado algum erro de sintaxe, compare o seu cdigo com o cdigofonte acima. Com essa classe implementada, voc j pode passar qualquer comando em SQL para o banco de dados.
146

Banco de Dados II

No caso dos comandos que no resultam dados, como Insert, Update e Delete, essa classe atende todas as suas necessidades. Porm para o comando de Select, que retorna os dados da pesquisa preciso formatar a apresentao dos dados. Mas isso assunto para a prxima classe que voc implementar. Antes preciso que voc implemente um programa de teste para classe ComandosSQL para test-la e, mais importante, ver como a mesma funciona. Para isso, abra o JCreator, crie um novo arquivo do tipo Java File, chamado usarComandos.java. Lembre-se de salv-lo na pasta c: \BD2\Fontes. Edite o seguinte cdigo-fonte:

import javax.swing.*; class usarComandos{ public static void main(String args[]){ String Titulos[] = {Cdigo,Descrico,Grau,Srie,Turno}; String Valores[] = new String[5]; String LinhaSQL = insert into turmas values(; ComandosSQL com = new ComandosSQL(); try{ com.AbrirConexao(AcessoDB,root,virtual); if (com.getConectou()){ for (int i=0; i< 5;i++){ Valores[i]=JOptionPane.showInputDialog(Informe o + Titulos[i]+:); Valores[i] =+Valores[i]+; if ( i < 4) Valores[i] =Valores[i]+,; LinhaSQL = LinhaSQL + Valores[i]; } LinhaSQL = LinhaSQL + ); JOptionPane.showMessageDialog(null,LinhaSQL); com.ExecutarComando(LinhaSQL); } }catch(Exception e){ JOptionPane.showMessageDialog(null,Problema: + e.getMessage()); } System.exit(0); } }

O Vetor Titulos representa cada campo da tabela de Turmas do banco de dados MySQL, database chamado sabetudo. O Vetor Valores armazena o valor digitado pelo usurio, na ordem dos campos da tabela Turmas.

A varivel LinhaSQL representa o comando SQL que ser executado pelo banco de dados.

Unidade 6

147

Universidade do Sul de Santa Catarina

Comentando o cdigo anteriormente citado, o objetivo dessa classe cadastrar uma turma no banco de dados. O atributo Titulos um vetor de constantes que representa cada um dos campos da Tabela de Turmas. Cada valor do vetor apresentado ao usurio na entrada de dados por meio do comando:
Valores[i]=JOptionPane.showInputDialog(Informe o + Titulos[i]+:);

Dessa forma, o vetor chamado Valores recebe o valor de cada campo da insero, na ordem de cadastramento do usurio. Tem-se, ento, duas estruturas:
0 1 Descrio 2 Grau 3 Srie 4 Turno

Ttulos Valores

Matrcula

Figura 6.6: ESTRUTURAS USADAS NA CLASSE USARCOMANDOS

Na execuo da classe, o valor de cada ttulo informado cadastrado na sua posio respectiva no vetor de valores. O comando que garante esse funcionamento :
for (int i=0; i< 5;i++){ Valores[i]=JOptionPane.showInputDialog(Informe o + Titulos[i]+:);

148

Banco de Dados II

O resultado da execuo desse comando ser a solicitao de cadastro de cada campo da Tabela de Turmas, da seguinte forma:

Figura 6.7 - PROCESSO DE ENTRADA DOS DADOS DA CLASSE USARCOMANDOS

Imagine que durante o cadastro, o usurio informou os valores:


Cdigo
1

Descrio
Sexta Serie B

Grau
1

Srie
6

Turno
M

Dessa forma, a estrutura usada pela classe car assim:


0 1 Descrio Sexta srie B 2 Grau 1 3 Srie 6 4 Turno M

Ttulos Valores

Matrcula 1

Figura 6.8- ESTRUTURA DA CLASSE USARCOMANDOS PREENCHIDAS

O prximo passo converter essas estruturas para um comando SQL, por isso o uso do atributo LinhaSQL, que foi inicializado com o valor Insert into Turmas values (.

Unidade 6

149

Universidade do Sul de Santa Catarina

Para montar o valor do atributo LinhaSQL, as seguintes regras foram implementadas: incluso do smbolo de aspas simples () antes de depois de cada valor de campo pelo comando:
Valores[i] = + Valores[i] + ;

incluso de uma vrgula (,) aps cada valor do vetor de Valores, exceto o ltimo campo, de ndice 4, que no recebe vrgula, pelo comando:
if ( i < 4) Valores[i] =Valores[i]+,;

concatenao dos valores do vetor de Valores na String LinhaSQL. Imagine essas regras na estrutura de valores da gura anterior, o vetor de valores caria assim:
Valores
1, Sexta srie B, 1 6 M

Figura 6.9 - VETOR DE VALORES COM OS VALORES COM ASPAS E VRGULA

Para visualizar a estrutura do comando em SQL criado, foi includa a instruo:


JOptionPane.showMessageDialog(null,LinhaSQL);

Cujo resultado algo como:

Figura 6.10 - COMANDO EM SQL MONTADO PELA CLASSE USARCOMANDOS

150

Banco de Dados II

O ltimo passo enviar o comando para o banco de dados e isto foi feito atravs da instruo: com.ExecutarComando(LinhaSQL); Com isso o registro informado estar cadastrado no banco de dados, na Tabela de Turmas. Como voc pode ver, so vrios detalhes da classe usarComandos, por isso muito importante que voc a codique, compile e execute. Aps execut-la quantas vezes desejar, acesse o banco de dados SabeTudo, do MySQL e liste os registros da Tabela de Turmas para ver se batem com as suas operaes de insero. Caso voc no se lembre de como fazer isso, aqui vai algumas dicas: Abra o MySQL pelo atalho do programa MySQL Command Line Client; Na solicitao de senha, informe a palavra virtual e pressione a tecla Enter; Entre no banco de dados SabeTudo pelo comando use sabetudo; J dentro do DataBase SabeTudo, execute o comando show tables para vericar as tabelas deste banco de dados; Execute o comando Select * from Turmas para listar os dados cadastrados na Tabela Turmas. Agora s vericar se os dados batem com os valores cadastrados por voc.

Unidade 6

151

Universidade do Sul de Santa Catarina

Na gura abaixo so apresentados os passos descritos anteriormente, porm j executados no MySQL.

Figura 6.11 - VERIFICAO DA EXECUO DA CLASSE USARCOMANDOS

Com isso voc tem uma real impresso de como usar a classe ComandosSQL, mas muita coisa ainda pode ser melhorada, principalmente no que se refere apresentao dos dados a partir de um Select, armazenado na classe ResultSet, mas isso ca para prxima unidade. At breve.

152

Banco de Dados II

Sntese
Nesta unidade voc pde revisar alguns conceitos da programao em Java, principalmente na estrutura de uma classe, como a mesma pode ser instanciada e usada. Junto a comandos que voc j conhecia e que so essenciais para programao em Java, algumas novas classes foram apresentadas a voc, como as classes DriverManager, Connection Statement e ResultSet. No momento essas estruturas podem parecer complexas, mas lembre-se que se tratam de um assunto novo, recm abordado. medida que voc for interagindo com essas classes, inclusive nas unidades que seguem, o uso se tornar fcil e direto. Lembre-se que um dia com certeza voc se questionou sobre os comandos em Java que hoje voc j domina. Naquele momento parecia que voc nunca os aprenderia, e hoje so to banais. Com as classes de conexo a banco de dados acontecer o mesmo.

Unidade 6

153

Universidade do Sul de Santa Catarina

Atividades de auto-avaliao
1. Qual a vantagem em se apresentar na tela, pelo mtodo getMessage(), o erro de uma Exception, como no exemplo a seguir? try{ //faz algo; }catch(Exception e){ System.out.println(O erro foi : + e.getMessage()); }

154

Banco de Dados II

2. Na definio de uma classe em Java, possvel atualizar o valor de um atributo diretamente, sem que se use o seu mtodo modificador. Essa forma de implementao pode ser considerada equivocada?

Saiba mais
DEITEL, H.M;DEITEL,P.J. Java: como programar. 6 ed. Pearson, 2005. SANTOS, Rui Rossi dos. Programando em Java 2Teorias e Aplicaes. Axcel: 2004. SIERRA,Kathy;BATES,Bert. Java Use a cabea. Alta Books: 2005. THOMPSON, Marco Aurlio. Java 2 & Banco de Dados. So Paulo, rica: 2002. Na internet:
<http://portaljava.com> <http://www.guj.com.br>

Unidade 6

155

UNIDADE 7

Comandos em Java para apresentao dos dados


Objetivos de aprendizagem
Compreender a estrutura de retorno de um comando Select. Compreender os comandos da linguagem Java que manipulam a sada de um comando de seleo. Implementar e testar os comandos de retorno de seleo em Java.

Sees de estudo
Seo 1 Estrutura de um Comando de Seleo. Seo 2 Classe ResultSet. Seo 3 Classe ResultSetMetaData. Seo 4 Passagens de Parmetros para Seleo.

Universidade do Sul de Santa Catarina

Para incio de conversa


Caro aluno, at aqui voc tem criado um conjunto de classes para facilitar a sua vida no que diz respeito conexo da linguagem Java a um banco de dados. Continuando nesse foco, nesta unidade voc criar uma classe para apresentao dos dados retornados por um comando de seleo, por meio de uma tabela. Com o uso desta tabela a apresentao dos dados se tornar visualmente mais atraente para o usurio da aplicao, principalmente pelo fato da seleo de dados ser uma das atividades mais executadas num sistema com acesso a banco de dados.

SEO 1 Estrutura de um comando de seleo


Diferente dos outros comandos em linguagem SQL, o comando de seleo de dados Select possui uma caracterstica prpria, pois um comando com retorno de dados. Quando da execuo de um comando Select, h um retorno de trs estruturas para o usurio do banco de dados, que so: o nome das colunas selecionadas pelo comando; os dados de cada linha que faz parte do ltro executado pelo comando; o tipo de dados de cada coluna. Por exemplo, no comando: Select * from turmas, o retorno do comando ser algo como:

Figura 7.1 - RETORNO DO COMANDO SELECT * FROM TURMAS.

158

Banco de Dados II

No caso do comando anterior, o asterisco (*) faz o papel de especicao dos nomes de todas as colunas da Tabela Turmas, do DataBase SabeTudo. Acredito que a estrutura do comando Select no seja novidade para voc, mesmo que voc no se lembre de todas as combinaes possveis para esse comando, como o uso de Where, Group By, Having e Order By. Analisando a estrutura representada pela gura anterior, pode-se notar que o tipo de dado de cada coluna no pode ser identicado por meio do retorno do comando Select, uma vez que esse comando retorna os dados cadastrados, mas no retorna a estrutura da tabela. Para vericar o tipo de dado de cada coluna, usa-se o comando Describe, conforme a gura a seguir.

Figura 7.2 - RESULTADO DO COMANDO DESCRIBE TURMAS;

Sendo assim, o programador que utiliza o banco de dados precisa saber o modelo utilizado para denio de cada tabela, as regras, os nomes e tipos de cada coluna das tabelas. Por isso, imprescindvel que esse prossional tenha um modelo completo em sua mesa, ou em qualquer lugar de fcil visualizao e anlise. Mas como permitir que esses dados de retorno do comando Select sejam interpretados pela linguagem de programao Java, uma vez que so estruturas diferentes? Aqui que entra o ponto fundamental da linguagem de programao e da necessidade de um prossional especializado em banco de dados, pois preciso que ele tenha fundamentos que lhe permitam compreender o que um comando Select retorna.

Unidade 7

159

Universidade do Sul de Santa Catarina

Sabendo como o comando de seleo funciona, cabe a ele estudar a linguagem a m de encontrar a estrutura de dados que lhe permita interagir com o banco de dados. No caso do Java, esse retorno de um comando de seleo representado por duas estruturas, ou no caso do Java, classes: ResultSet; e ResultSetMetaData; Na prxima seo voc ver o que faz cada uma dessas classes.

SEO 2 Classe ResultSet


A classe ResultSet como o prprio nome j diz, faz uma referncia aos dados retornados por um comando de seleo, ou simplesmente, Select.
importante salientar que essa classe no uma classe de conexo ao banco de dados, mas sim uma classe de manipulao dos resultados obtidos por um comando de seleo.

O ResultSet a classe responsvel por manipular os dados obtidos da execuo de uma query (pesquisa pelo uso de um Select) .

Sendo assim, para que a classe ResultSet possa ser utilizada necessrio que o banco de dados j tenha sido conectado e aberto. At a verso do JDBC 1.0 o ResultSet no permitia a navegabilidade dentro dos resultados trazidos. Dessa forma, o comando s podia ser utilizado de maneira seqencial, sempre para frente. Uma vez que um registro fosse acessado, no era possvel voltar para acess-lo novamente. A verso JDBC 2.0, mais atual, introduziu a navegabilidade, o posicionamento e a manipulao de dados no ResultSet.
A navegabilidade refere-se capacidade de navegar para frente e para trs nas linhas contidas em um ResultSet. O posicionamento a capacidade de mover o cursor corrente para uma outra posio dentro do ResultSet. A manipulao a capacidade de alterar os valores contidos em um ResultSet.

160

Banco de Dados II

Com isso, a classe passou a disponibilizar um conjunto maior de mtodos de trabalho, como:
Quadro 7.1 - MTODO DA CLASSE RESULTSET

Mtodo da Classe ResultSet


rst(): posiciona o cursor na primeira linha do ResultSet e retorna true, caso no exista linhas, retorna false. last(): posiciona o cursor na ltima linha do ResultSet e retorna true, caso no exista linhas, retorna false. next(): posiciona o cursor na prxima linha do ResultSet e retorna true, caso a linha exista e false caso no exista mais linhas no ResultSet. isFirst(): retorna true caso o cursor corrente esteja posicionado na primeira linha. isLast(): retorna true caso o cursor corrente esteja posicionado na ltima linha. isBeforeFirst(): retorna true caso o cursor corrente esteja posicionado antes da primeira linha. isAfterLast(): retorna true caso o cursor corrente esteja posicionado aps a ltima linha. int getRow(): retorna o nmero da linha do cursor corrente.

Como o Java uma linguagem Case Sensitive, em que comandos maisculos e minsculos so diferenciados, no quadro apresentado a sintaxe dos comandos j est na forma correta de uso. Para compreender melhor o que faz cada um dos mtodos apresentados no quadro, abra o JCreator e crie um novo arquivo do tipo Java File, renomeie o arquivo para Exemplos, salvandoo na pasta c:\BD2\Fontes. Nesta nova classe sero implementadas as seguintes funcionalidades: conexo com banco de dados; execuo de um comando de Seleo na Tabela Turmas; listagem de todos os dados da Tabela de Turmas; navegao na Tabela de Turmas; apresentao de um menu de interao com usurio.
Unidade 7

161

Universidade do Sul de Santa Catarina

Essa classe ser manipulada pelo usurio por meio de um Menu com o seguinte layout:

Figura 7.3 - MENU DE INTERAO COM A CLASSE EXEMPLOS

Por meio desse menu o usurio poder listar todos os dados da Tabela de Turmas, bem como navegar pelos registros cadastrados. Veja a seguir o cdigo-fonte dessa classe:

import java.sql.*; import javax.swing.*; class Teste { private static Connection con; private static Statement st; private static ResultSet rs; public static String Turno(String _Turno){ if(_Turno.equalsIgnoreCase(M)) return Matutino; else if(_Turno.equalsIgnoreCase(V)) return Vespertino; else return Noturno; } public static void Conectar(){ try{ String url = jdbc:odbc:AcessoDB; String usuario = root; String senha = virtual; Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); con = DriverManager.getConnection(url,usuario,senha); System.out.println(Conectando.);

162

Banco de Dados II

}catch(Exception e){ System.out.println(Erro de Conexo: + e.getMessage()); }

public static void Desconectar(){ try{ if(st != null){ st.close(); con.close(); } System.out.println(Desconectando.); }catch(Exception e){ System.out.println(Erro desconectando o banco.); } } public static void Selecionar(String Comando){ try{ st = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); rs = st.executeQuery(Comando); }catch(Exception e){ System.out.println(Comando no pode ser executado!); } } public static void Listar(){ try{ System.out.println(Codigo: + rs.getString(Codigo_Turma)); System.out.println(Turma: + rs.getString(Descricao) ); System.out.println(Serie: + rs.getString(Serie) ); System.out.println(Grau: + rs.getString(Grau) ); System.out.println(Turno: + Turno(rs.getString(Turno))+\n); }catch(Exception e){ System.out.println(Erro listando os dados.); } } public static void Primeiro() throws SQLException {rs.rst();} public static void Ultimo() throws SQLException {rs.last();} public static void Proximo() throws SQLException {rs.next();} public static void Anterior() throws SQLException {rs.previous();} public static boolean NoPrimeiro() throws SQLException {return rs.isFirst();} public static boolean NoUltimo() throws SQLException {return rs.isLast();} public static void ListarTodos() throws SQLException{ Primeiro(); do{ Listar(); Proximo(); }while (!rs.isAfterLast()); } public static void Menu(){ try{ Conectar(); Selecionar(Select * from Turmas); int op = 0; do{
SEGUE

Unidade 7

163

Universidade do Sul de Santa Catarina

op = Integer.parseInt(JOptionPane.showInputDialog( 1-Listar Todos\n+ 2-Listar o Primeiro Registro\n+ 3-Listar o ltimo Registro\n+ 4-Listar o Prximo Registro\n+ 5-Listar o Registro Anterior\n+ 6-Sair)); switch (op){ case 1:System.out.println(Listando as Turmas ); ListarTodos(); System.out.println(--------------------); break; case 2:System.out.println( --- PRIMEIRO --- ); Primeiro(); Listar(); System.out.println(---------------------); break; case 3:System.out.println( --- ULTIMO --- ); Ultimo(); Listar(); System.out.println(---------------------); break; case 4: if (!NoUltimo()){ Proximo(); Listar(); }else{ JOptionPane.showMessageDialog(null, No h prximo!); } break; case 5: if (!NoPrimeiro()){ Anterior(); Listar(); }else{ JOptionPane.showMessageDialog(null, No h anterior!); } break; }//nal so switch }while (op != 6); //nal do do Desconectar(); System.exit(0); }catch(Exception e){ System.out.println(Erro: + e.getMessage()); } }//nal da classe Menu public static void main (String args[]) { Menu(); } }//nal da classe Exemplos

164

Banco de Dados II

Veja a seguir o que faz cada uma dos mtodos da classe Exemplos.
Quadro 7.2 - MTODOS DA CLASSE EXEMPLOS Mtodo Objetivo Este mtodo tem como nalidade converter os valores do campo Turno, de char para String. Assim, ao invs de apresentar valores como M,V e N, as sadas sero,respectivamente, Matutino, Vespertino e Noturno. Este mtodo responsvel pela conexo ao Banco de Dados MYSQL, no database SabeTudo, pela fonte de dados AcessoDB. Esse mtodo verica se a conexo foi realizada anteriormente, pelas classes Statement (st) e Connection (con). Em seguida fecha a conexo com banco de dados pelo mtodo close() de cada classe. Esse mtodo prepara o banco de dados para execuo de um comando SQL, pela classe do tipo Statement. public static void Selecionar(String Comando) Na classe ResultSet armazenado o resultado do comando passado como parmetro. ResultSet.TYPE_SCROLL_SENSITIVE permite a navegao no banco de dados, pelas funes rst(),previous(),last(), etc. ResultSet.CONCUR_READ_ONLY no permite que valores resultantes do comando de seleo sejam alterados. Esse mtodo lista na tela os valores de todos os campos da tabela Turma. O mtodo rs.getString() recebe como parmetro o nome do campo que ser lido, e retorna o valor cadastrado no banco de dados no formato de uma String.

public static String Turno(String _Turno)

public static void Conectar()

public static void Desconectar()

public static void Listar()

public static void Primeiro() public static void Ultimo() public static void Proximo() public static void Anterior()

Esses mtodos permitem a navegao no resultado do comando de seleo que foi executado.

Esse mtodo lista todos os registros resultantes do comando de seleo. public static void ListarTodos() Para listar todos os dados a lgica adota foi, posicionar no primeiro registro do resultado do comando de seleo. Enquanto no chegar ao nal de todos os registros (! rs.isAfterLast()), mostra os dados de cada campo (Listar()) e vai para o prximo (Proximo()) registro.
SEGUE Unidade 7

165

Universidade do Sul de Santa Catarina

public static boolean NoPrimeiro() public static boolean NoUltimo()

Esses mtodos retornam verdadeiro ou falso para indicar se a posio atual de leitura a primeira ou a ltima de todos os registros retornados pelo comando de seleo. Esse mtodo desenha um Menu na tela, sendo que cada opo do menu faz uma chamada aos mtodos apresentados acima.

public static void Menu()

O programa principal da classe, o mtodo main (String args []), faz uma nica referencia ao mtodo Menu(), que por sua vez, faz a chamada a todas as funcionalidades do sistema. Agora que voc j est por dentro do que deve fazer a classe acima, edite, compile e execute o cdigo apresentado anteriormente e divirta-se com o funcionamento do programa. No se esquea, em caso de erro de compilao, revise o que voc editou e compare com o que est descrito aqui e, principalmente, tenha pacincia, pois essa uma virtude de qualquer programador.

SEO 3 Classe ResultSetMetaData


A classe ResultSetMetaData faz parte de um conjunto de classes do Java que permitem a anlise dos metadados do banco de dados utilizado. Apesar do nome estranho, metadados, o seu signicado bem simples.
Os metadados so as informaes sobre as tabelas do banco de dados, como nomes das colunas, tipos, tamanho das colunas, usurio que est acessando a tabela.

166

Banco de Dados II

O principal objetivo do acesso aos dados armazenados no metadados a independncia do cdigo implementado das estruturas das tabelas acessada pelo sistema. Por exemplo, na classe da seo anterior, para listar os dados das tabelas o cdigo usado foi:
public static void Listar(){ try{ System.out.println(Codigo: + rs.getString(Codigo_Turma)); System.out.println(Turma: + rs.getString(Descricao) ); System.out.println(Serie: + rs.getString(Serie) ); System.out.println(Grau: + rs.getString(Grau) ); System.out.println(Turno: + Turno(rs.getString(Turno))+\n); }catch(Exception e){ System.out.println(Erro listando os dados.); } }

Note que a soluo est presa estrutura da Tabela Turmas, pois os nomes dos campos so xos, sendo assim, se este mtodo for executado para outra tabela, no funcionar. Ou seja, em muitas situaes se torna necessrio recuperar esses metadados para que se construam consultas dinamicamente, pois em uma grande base de dados mudanas estruturais acontecem com certa freqncia. Existem duas classes que permitem recuperar metadados a partir do Driver JDBC, no pacote java.sql: DatabaseMetaData, e ResultSetMetaData. Na verso JDBC 3.0, h tambm a classe ParameterMetaData, mas no ser tratada nesta seo.

Unidade 7

167

Universidade do Sul de Santa Catarina

A classe DatabaseMetaData
A classe DatabaseMetaData uma classe mais genrica que permite acessar informaes relacionadas aos metadados sobre o banco de dados em uso, como: objetos do banco de dados; informaes sobre o Driver JDBC ; privilgios de acesso. Essa classe est diretamente relacionada classe Conenction. O cdigo fonte a seguir apresenta um exemplo de uso da classe DatabaseMetaData:

import java.sql.*; import javax.swing.*; public class Metadados { public static void main(String args[]) { try{ String url = jdbc:odbc:AcessoDB; String usuario = root; String senha = virtual; Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); Connection con = DriverManager.getConnection (url,usuario,senha); System.out.println(Conectando.); DatabaseMetaData dbmd = con.getMetaData(); JOptionPane.showMessageDialog(null,Versao do Driver JDBC = + dbmd.getDriverVersion()+\nVersao do Banco de Dados = + dbmd.getDatabaseProductVersion()); }catch(Exception e){ System.out.println(Erro de Conexo:+e.getMessage()); } } }

168

Banco de Dados II

A classe DataBase MetaData apresentar na tela a verso do Driver JDBC e a verso do banco de dados utilizado. Veja o resultado da execuo da classe:

Figura 7.4 - RESULTADO DA EXECUO DA CLASSE METADADOS

A classe ResultSetMetaData
A classe ResultSetMetaData est relacionada aos metadados das tabelas do banco de dados. Essa classe possibilita a recuperao dinmica de dados como: quantidade de colunas de uma tabela; nome da coluna; tipo de dados da coluna; tamanho de cada coluna. No cdigo-fonte a seguir apresentada uma classe que permite resgatar alguns dados referentes Tabela Turmas.

import java.sql.*; import javax.swing.*; public class MetadadosTabela { public static void main(String[] args) { try{ String url = jdbc:odbc:AcessoDB; String usuario = root; String senha = virtual; Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); Connection con = DriverManager.getConnection(url,usuario,senha); System.out.println(Conectando.);
SEGUE

Unidade 7

169

Universidade do Sul de Santa Catarina

Statement st = con.createStatement(); ResultSet rs = st.executeQuery(SELECT * from Turmas); ResultSetMetaData rsmd = rs.getMetaData(); int colunas = rsmd.getColumnCount(); String saida = ; for (int i=0; i<colunas; i++) { saida+=\nColuna: + rsmd.getColumnName (i + 1) + \nTipo: + rsmd.getColumnTypeName (i + 1) + \nTamanho: + rsmd.getColumnDisplaySize (i + 1) + \n; } JOptionPane.showMessageDialog(null,saida); }catch(Exception e){ System.out.println(Erro de Conexo:+e.getMessage()); } } }

O resultado da execuo da classe ser algo como:

Figura 7.5 - ESTRUTURA DA TABELA TURMAS, LISTADA PELA CLASSE METADADOSTABELA

170

Banco de Dados II

O ideal que voc implemente essa classe no JCreator, compile e execute para v-la funcionando. muito importante que voc interaja com essas classes no JCreator, para se habituar com os comandos e pratic-los.

SEO 4 Passagens de parmetros para seleo


Acredito que voc tenha notado nas implementaes das classes anteriores que uma das principais caractersticas torn-las genricas, de forma que possam atender as mais variadas funcionalidades, sem que o programador tenha que reescrev-las.

Uma boa metodologia adotada para criao de classes genricas o uso de passagens de parmetros para o cdigo SQL.

Por exemplo, para consultar as turmas cadastradas pelo campo chamado codigo_turma, o comando SQL caria assim:
Select * from Turmas where Codigo_Turma = <um_valor>;

O que mudaria nesse cdigo para a consulta de vrias turmas?

O nico item nesse comando que pode ser alterado o valor do cdigo da turma buscado. Ento, porque exigir do programador que ele altere esse comando toda vez que for pesquisar uma nova turma? Seria um desperdcio de tempo. Uma forma de resolver ese problema a utilizao do mtodo prepareStatement antes da execuo do comando SQL.

Unidade 7

171

Universidade do Sul de Santa Catarina

Sendo que o valor do campo que pode ser alterado passa a ser representado por um smbolo de interrogao (?). Veja a classe a seguir que implementa essa regra e depois volto a detalhar como essa tcnica funciona:

import java.sql.*; public class usodeParametros { public static void main(String[] args) { try{ String url = jdbc:odbc:AcessoDB; String usuario = root; String senha = virtual; Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); Connection con = DriverManager.getConnection(url,usuario,senha); System.out.println(Conectando.);

PreparedStatement st = con.prepareStatement(SELECT * + FROM turmas + WHERE Codigo_Turma = ?); st.setString(1,3); ResultSet rs = st.executeQuery(); while (rs.next()) { System.out.println(rs.getString(Codigo_Turma)); System.out.println(rs.getString(Descricao)); } rs.close(); st.close(); }catch(Exception e){ System.out.println(Erro de Conexo: + e.getMessage()); } } }

172

Banco de Dados II

O diferencial da classe acima est nos cdigos:


PreparedStatement st = con.prepareStatement(SELECT * + FROM turmas + WHERE Codigo_Turma = ?);

O smbolo de interrogao ser substitudo pelo valor informado na passagem de parmetros st.setString(1,3); O primeiro item do mtodo st.setString() representa o nmero do parmetro, nesse caso o cdigo tem apenas um parmetro (ou seja, um ?). O segundo item representa o valor que ser buscado na tabela. Veja a gura a seguir.

Figura 7.6 - REPRESENTAO DO COMANDO SELECT APS RECEBER O PARMETRO

Note que o comando SQL de seleo receber o valor passado como parmetro. Podem ser usados quantos parmetros forem necessrios. Veja mais este exemplo, s que agora usando dois parmetros:

import java.sql.*; public class Metadados2 { public static void main(String[] args) { try{ String url = jdbc:odbc:AcessoDB; String usuario = root; String senha = virtual; Class.forName(sun.jdbc.odbc.JdbcOdbcDriver); Connection con = DriverManager.getConnection(url,usuario,senha); System.out.println(Conectando.);
SEGUE

Unidade 7

173

Universidade do Sul de Santa Catarina

PreparedStatement st = con.prepareStatement(SELECT * + FROM turmas + WHERE Codigo_Turma = ? AND + Descricao = ?); st.setString(1,3); st.setString(2,Sexta Serie A); ResultSet rs = st.executeQuery(); while (rs.next()) { System.out.println(rs.getString(Codigo_Turma)); System.out.println(rs.getString(Descricao)); } rs.close(); st.close(); }catch(Exception e){ System.out.println(Erro de Conexo: + e.getMessage()); } } }

O uso de parmetros pode facilitar em muito a vida do programador, pois so muitas as regras de negcio que envolve cada tabela de um banco de dados, regras de insero, consulta, excluso e alterao.

No caso da linguagem Java, cada uma dessas tabelas gerenciada por uma classe de controle, que implementa o que pode e o que no se pode fazer com a tabela por parte do usurio do sistema. Essas classes abrangem todos os cdigos vistos por voc at agora, sempre buscando a generalidade da classe. Mas isto assunto para a prxima unidade.

174

Banco de Dados II

Sntese
Voc pde estudar nesta unidade que a classe DatabaseMetaData obtida pela instncia da classe Connection e oferece um conjunto de recursos de recuperao de metadados da base de dados e da sua conexo atual, podendo ser utilizada, por exemplo, para vericar, a verso do Driver JDBC. J, a classe ResultSetMetaData pode ser obtida por um ResultSet previamente criado, possibilitando a recuperao de metadados sobre as colunas das tabelas, como: quantidade de colunas, nome e tipos das mesmas. Com essas duas classes possvel recuperar informaes dinamicamente de uma base de dados, tornado as classes implementadas mais abstratas.

Atividades de auto-avaliao
1. Cite exemplos de metadados em banco de dados relacional.

Unidade 7

175

Universidade do Sul de Santa Catarina

2. De que forma a linguagem Java obtm informaes sobre os metadados de um SGDB?

Saiba mais
ANSELMO, Fernando. Aplicando orientao a objetos em Java.Visual Books, 2005. COSTA, Luis Carlos da. Java para iniciantes. Cincia Moderna, 2002. HORSTMANN, Cay S. Big Java. Artmed Bookman, 2004. RANGEL, Alexandre. Mysql-Projeto Modelagem e Desenvolvimento de Banco de Dados. Alta Books, 2005.

176

UNIDADE 8

Criando a aplicao de cadastro de alunos


Objetivos de aprendizagem
Aplicar as tcnicas desenvolvidas nas unidades anteriores. Implementar e testar os processos de cadastramento e povoamento dos dados da Tabela de Alunos.

Sees de estudo
Seo 1 Estrutura da classe de cadastro de alunos. Seo 2 Atributos da classe Alunos. Seo 3 Construtor da classe Alunos. Seo 4 Verificando se o cdigo de matrcula j
existe.

Seo 5 Preparando os valores para gravao. Seo 6 Gravando os dados na Tabela de Alunos. Seo 7 Seo 8
Excluindo os dados da Tabela de Alunos. Alterando os dados da Tabela de Alunos.

Universidade do Sul de Santa Catarina

Para incio de conversa


Bem, at esta unidade voc teve um papel fundamental no processo de desenvolvimento de um sistema computacional com acesso a banco de dados, planejando, analisando e criando mecanismos para se chegar soluo esperada. A partir de agora, a hora de colocar isso em prtica. Sendo assim, nesta unidade voc atuar como um desenvolvedor de solues, criando uma classe em Java que permita o cadastramento e a manipulao dos dados dos alunos registrados no banco de dados da escola Sabe Tudo. Chegou a hora de colher os frutos daquilo que voc plantou com tanta dedicao, estudo e pacincia. Portanto, mos obra.

Seo 1 Estrutura da classe de cadastro de alunos


Como j visto por voc, um programa em Java representado por meio de uma classe, com seus atributos mtodos. Sendo assim, a implementao do programa de manipulao da Tabela Alunos, do modelo de dados implementado em MySQL, tambm ser uma classe, que seguir as regras de negcio do sistema proposto escola Sabe Tudo. Mas quais so estas regras? O cadastro de alunos seguir as seguintes regras: a insero de todos os dados obrigatrios. Caso essa regra seja quebrada, uma mensagem ser informada ao usurio do sistema, solicitando novamente os dados para esse campo; os campos obrigatrios sero identicados pelo smbolo de asterisco (*);

178

Banco de Dados II

antes da gravao dos dados na tabela, o usurio visualizar as informaes fornecidas por ele, e o mesmo poder ou no conrmar o cadastro; o usurio no poder cadastrar um novo aluno com um cdigo de matrcula que j tenha sido usado, caso isso acontea, uma mensagem ser enviada identicando o problema ocorrido; a excluso de dados ser realizada com base no cdigo de matrcula informado. Caso a matrcula informada exista no banco de dados, sero apresentados a matrcula e o nome do aluno selecionado; o usurio poder conrmar ou no a excluso solicitada; a atualizao dos dados ser realizada a partir da matrcula do aluno. Caso a matrcula seja localizada na base de dados, sero apresentados os dados cadastrados atualmente e sero solicitados os novos dados, para cada campo da tabela; a pesquisa de dados do aluno ser realizada a partir da matrcula ou do nome do aluno, sendo que o usurio poder especicar quais os dados que ele deseja visualizar. O resultado da pesquisa ser apresentado no formato de um grid, para facilitar a interao com usurio. Bem, com certeza voc deve ter imaginado outras regras de negcio para a Tabela de Alunos. No entanto, o objetivo desta unidade apresent-lo s tcnicas para a realizao de um conjunto mnimo de operaes, e cabe a voc, a partir disso, complementar com as regras que considerar essenciais. Eu estou apenas plantando a semente, voc que deve reg-la para que d frutos e cresa a cada dia. Cada uma das regras acima utilizar um conjunto de comandos em Java aprendidos nesta disciplina nas unidades anteriores, e comandos j estudados por voc na disciplina de Programao Orientada a Objetos.

Unidade 8

179

Universidade do Sul de Santa Catarina

Para facilitar a sua compreenso do cdigo-fonte, sero apresentadas as regras de implementao separadamente, e no nal da unidade voc ter o mesmo cdigo, porm com todas as regras implementadas em Java. O objetivo dividir para conquistar o conhecimento desejado.

Seo 2 Atributos da classe Alunos


Como a classe que ser implementada representa as regras de negcio da Tabela de Alunos, a mesma ser nomeada de Alunos. A classe Alunos precisar importar pacotes de classes: javax.swing; java.sql. O pacote javax.swing ser necessrio para as operaes de entrada e sada de dados da classe, por meio dos mtodos: JOptionPane.showInputDialog; e JOptionPane.showMessageDialog. J o pacote java.sql ser necessrio para as operaes com banco de dados, por meio das classes: ResultSet; ResultSetMetaData. Ambas as classes j foram apresentadas nas unidades anteriores. Com base nisso, a classe Alunos j ter o seguinte escopo:

import javax.swing.*; import java.sql.*; class Alunos{ Regras de Negcio da Classe; }

180

Banco de Dados II

Bem, agora que voc j conhece as necessidades de classes externas para o funcionamento da classe Alunos, o prximo passo a apresentao dos atributos que denem as suas caractersticas. Lembre-se sempre que os atributos de uma classe so sempre privados, ou do Java, private. Os atributos da classe Alunos so:
private String Campos[] = { Matrcula *, Nome * , Data de Nascimento *, Idade *, CPF, RG, Nome do Pai *, Nome da Me *, Endereo * , Nmero * , Cidade *, Estado *, Bairro *, Telefone, Celular, Responsvel, Alrgico a, Grupo Sanguneo, Doador de Orgos Sim/No }; private ComandosSQL Comando; private ResultSetMetaData Rsmd; private String NomesColunas[] = new String [19];

Antes que voc se assuste com os cdigos acima, j vou detalhar qual a nalidade do atributo apresentado anteriormente.

Atributo Campos
O atributo Campos um vetor de string, sem tamanho prdenido, por isso a sintaxe String Campos [ ] = { }; Esse atributo representa o Nome de Apresentao de cada coluna da Tabela de Alunos, porm num portugus claro, correto, com acentuaes.
Unidade 8

181

Universidade do Sul de Santa Catarina

Lembre-se que quando voc cria as colunas da tabela, por meio do comando Create Table, voc no as acentua. Dessa forma, caria muito estranho a solicitao ao usurio do sistema como uma mensagem como: Informe o Endereco? Para resolver esse problema, o atributo Campos representa cada uma das colunas da Tabela de Alunos do banco de dados, seguindo a mesma ordem fsica dos dados, denida no processo criao da tabela e que pode ser visualizada por meio do comando Describe do SQL. Sendo assim, de forma resumida, pode-se dizer que o atributo Campos representa a sada do comando em SQL, Describe Alunos, como mostra a tabela a seguir:
Nome Fsico Matricula Nome Data_Nascimento Idade CPF RG_Identidade Nome_Pai Nome_Me Endereco Numero Cidade Estado Bairro Telefone Celular ChamarPor Alergia GrupoSangue Doador Nome de Apresentao Matrcula * Nome * Data de Nascimento * Idade * CPF RG Nome do pai * Nome da Me * Endereo * Nmero * Cidade * Estado * Bairro * Telefone Celular Responsvel Alrgico Grupo Sanguneo Doador de Orgos Sim/No

Com base nesse vetor do tipo string, com 19 posies, iniciando em 0 e terminando no ndice 18, possvel representar o nome de todas as colunas da Tabela de Alunos. Como esse vetor no muda, ou seja, os nomes de todas as colunas so os mesmos sempre, o atributo foi criado como uma lista
182

Banco de Dados II

constante, em que os valores de cada posio esto representados entre os sinais de abre chaves { e fecha chaves }. Para os campos obrigatrios da Tabela de Alunos, foi acrescentado um sinal de asterisco * ao lado do nome de apresentao da coluna para que o usurio possa identicar aquele dado como obrigatrio.

Atributo Comando
O atributo Comando uma composio (quando uma classe faz referncia direta a outra classe) da classe ComandosSQL, apresentada e implementada nas unidades anteriores. A principal nalidade dessa classe permitir a conexo com banco de dados por meio do mtodo AbrirConexo e possibilitar a execuo de comandos em SQL por meio do mtodo ExecutarComando. Duas caracterstica importantes da classe ComandosSQL, e conseqentemente do atributo Comando, so os mtodos recuperadores getConectou() que indica se a conexo com banco de dados foi realizada ou no, e o mtodo getResultadoSQL() que representa o resultado da execuo de um comando de Select.

Atributo Rsmd
Esse atributo com nome estranho a abreviatura do tipo de classe que ele representa, que uma classe chamada ResultSetMetaData, que tambm foi vista por voc nas unidades anteriores. utilizado para: identicao do nmero de colunas da tabela getColumnCount(); identicao dos nomes fsicos de cada coluna da tabela getColumnName(); identicao do tipo de dado de cada coluna da tabela getColumnType();
Unidade 8

183

Universidade do Sul de Santa Catarina

Essas identicaes so fundamentais para a gerao do comando de insero de dados na Tabela de Alunos, pois o comando Insert deve referenciar os nomes fsicos de cada coluna, e os campos do tipo Varchar, Char e Date devem ter o valor de cadastro entre aspas. Por exemplo, no caso do cadastro da Matrcula e do Nome do Aluno, o comando Insert dever ter a seguinte sintaxe:
Insert into Alunos (Matricula,Nome) values (1,Marcelo Medeiros);

Os campos Matricula e Nome representam as colunas fsicas da Tabela de Alunos, j os valores de cadastros so informado pelo usurio do sistema, entretanto, os dados literais, como Nome, devem estar entre aspas. Essas regras de recuperar o nome fsico dos campos e acrescentar aspas aos campos literais e data devem ser geradas de forma automtica pelo sistema, sem a interao do usurio.

Atributo NomesColunas
O atributo NomesColunas um vetor de string, de tamanho 19, que armazenar os nomes fsicos das colunas da Tabela de Alunos. Esse atributo est diretamente relacionado ao atributo Rsmd, visto anteriormente, uma vez que a gerao dos nomes fsicos das colunas realizada por meio da classe ResultSetMetaData. Basicamente, a sua nalidade armazenar os nomes das colunas retornadas pela classe ResultSetMetaData, por meio do atributo Rsmd e do mtodo getCoumnName().

184

Banco de Dados II

Seo 3 Construtor da classe Alunos


Como j visto por voc, uma classe representa as regras de manipulao de um objeto, e para ser utilizada precisa ser instanciada criada. O processo de criao da classe realizado pelo mtodo chamado de construtor, que deve ter o mesmo nome da classe implementada. O principal objetivo do mtodo construtor denir um valor inicial para os atributos da classe. Com base nisso, o construtor da classe Alunos tem o seguinte cdigo-fonte:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 public Alunos(){ Comando = new ComandosSQL(); Comando.AbrirConexao(AcessoDB,root,virtual); if (!Comando.getConectou()){ JOptionPane.showMessageDialog( null,Erro de Conexo com Banco de Dados\n + Entre em contato com Suporte ! \n + A aplicao ser FECHADA ! ); System.exit(0); } else{ try{ Comando.ExecutarComando(select * from alunos); ResultSet res = Comando.getResultadoSQL(); GerarNomesColunas(res); }catch(Exception e){ System.out.println(Erro Gerando Nome das Colunas); } } }

Vou apresentar a voc qual a nalidade das principais linhas de comando do cdigo-fonte acima.

Unidade 8

185

Universidade do Sul de Santa Catarina

Linha 1

Representa o nome do mtodo construtor, que deve ter o mesmo nome da classe. Tenha sempre o cuidado com maisculas e minsculas, pois a linguagem Java chamada de Case Sensitive, sendo assim, diferencia maisculas e minsculas.
Linha 2

Instancia a classe ComandosSQL, representada pelo atributo comandos. A criao da classe realizada pela instruo new (novo). Uma classe s pode ser utilizada se anteriormente ela tenha sido instanciada, caso contrrio, ser gerada um erro de NullPointerException.
Linha 3

Aps a criao da classe ComandosSQL, realizada a tentativa de conexo com o banco de dados pelo mtodo AbrirConexo, que recebe como parmetros o nome da fonte (criada via ODBC), o nome do usurio administrado do banco (root) e a senha de acesso (virtual).
Linha 4

Nessa linha de comando vericado se a conexo com banco de dados foi realizada (getConectou() retornando true). Caso a conexo no tenha sido realizada, uma mensagem ser apresentada ao usurio e a aplicao ser nalizada (Syetm. exit(0)), pois sem acesso ao banco de dados, o usurio no poder realizar nenhuma operao no sistema.
Linha 13

A chegada nessa linha pela execuo do programa indica que a conexo foi realizada, sendo assim, executada uma seleo de todos os registros da Tabela de Alunos para obteno de um ResultSet, representado pelo atributo local res.

186

Banco de Dados II

Linha 15

O mtodo GerarNomesColunas recebe como parmetro o ResultSet do atributo res e, pela classe ResultSetMetaData, preenche o atributo NomesColunas com o nome fsico de cada coluna da Tabela de Alunos. Veja o cdigo do mtodo GerarNomesColunas:
1 2 3 4 5 6 7 8 9 public void GerarNomesColunas(ResultSet rs){ try{ Rsmd = rs.getMetaData(); for (int i = 1; i <= Rsmd.getColumnCount(); i++) NomesColunas[i-1] = Rsmd.getColumnName(i); }catch(Exception e){ System.out.println(Erro Gerando Nome das Colunas); } }

Esse mtodo recebe um ResultSet por meio do parmetro rs. Esse ResultSet analisado pela classe ResultSetMetaData, representado pelo atributo Rsmd. Um lao for executado, varrendo todas as colunas retornadas pelo comando Select * from Alunos, e pelo mtodo getColumnName(i), cada uma dessas colunas tem o seu nome fsico armazenado no atributo NomeColunas.

Seo 4 Vericando se o cdigo de matrcula j existe


A Tabela de Alunos possui uma restrio do tipo chave primria que dene que no podem existir mais de um aluno com o mesmo nmero de matrcula. No caso do Java, caso seja cadastrado mais de um aluno com o mesmo cdigo de matrcula, ser gerado um erro, identicado como : Duplicate entry ... for key. Para evitar que esse erro ocorra, que um erro grave, gerando a interrupo na execuo do programa, um mtodo ser implementado para vericar se uma determinada matrcula j foi cadastrada.
Unidade 8

187

Universidade do Sul de Santa Catarina

O mtodo, chamado de MatriculaExiste, retornar um valor lgico, verdadeiro ou falso, para indicar se o cdigo j foi ou no utilizado. Esse mtodo possui o seguinte cdigo-fonte:
1 2 3 4 5 6 7 8 9 10 11 public boolean MatriculaExiste(String Mat){ try{ Comando.ExecutarComando( select * from alunos where Matricula = + Mat); ResultSet rs = Comando.getResultadoSQL(); return (rs.next()); }catch(Exception e){ System.out.println(Erro Pesquisando Matricula.); return true; } }

Veja o que faz cada linha. 1- O mtodo MatriculaExiste recebe um parmetro do tipo string, chamado Mat, e retorna um boleano. 3- realizada uma consulta na Tabela de Alunos, ltrando todos os registros que possuam a matrcula com valor igual ao valor do parmetro chamado Mat. 5- O atributo local rs, do tipo ResultSet, armazena o resultado da execuo do comando ltro realizado na linha 3 da rotina. 6- O mtodo next() retornar true (verdadeiro) caso exista pelo menos um registro dentro do ResultSet, o que indica que existe algum aluno com a mesma matrcula. 9- Caso, por algum motivo, essa rotina no possa ser executada, o tratamento de exceo do Java retornar um valor verdadeiro, para evitar que sejam cadastradas duas matrculas com mesmo valor, pois a validao no pode ser realizada.

188

Banco de Dados II

Seo 5 Preparando os valores para gravao


Como apresentado, os campos gravados na Tabela de Alunos, dependendo do tipo de dado da coluna, podem exigir que o valor seja colocado entre aspas. o caso dos tipos de dados Varchar, Char e Date. Para o usurio do sistema isso abstrado. Quando ele for cadastrar um nome de aluno, ele no far a entrada de dados inserindo as aspas antes e depois de cada valor. Por exemplo, para cadastrar o aluno chamado Lucas, ele no precisar informar o dado no formato Lucas, quem dever gerar essa estrutura o programa, de forma automtica. Para que isso seja realizado, ser implementado um mtodo que vericar o tipo da coluna de insero e, dependendo do tipo, o valor ser ou no acrescido de aspas. O cdigo-fonte do mtodo :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 public String FormatoCampo(int Pos,String Valor){ String Saida=Valor; try{ switch(Rsmd.getColumnType(Pos)) { case Types.VARCHAR: Saida = + Valor +;break; case Types.DATE: Saida = +Valor +;break; case Types.INTEGER: Saida = Valor;break; case Types.CHAR: Saida = +Valor+;break; case Types.FLOAT: Saida = Valor;break; } return Saida; }catch(Exception e) { return Saida; } }

Veja o que faz o cdigo acima. O mtodo FormatoCampo recebe dois parmetros, o primeiro, chamado de Pos, do tipo inteiro, representa qual coluna da tabela ser analisada. O segundo parmetro, chamado de Valor, do tipo string, representa o valor que ser gravado na Tabela de Alunos.
Unidade 8

189

Universidade do Sul de Santa Catarina

Esse mtodo retornar o mesmo valor de entrada, com ou sem aspas, dependendo do tipo de dado. Caso o tipo de dado seja Varchar, Char ou Date, o valor de entrada recebe aspas antes e depois do valor, por meio do comando:
Saida = +Valor + ;

O atributo Sada representa o valor de entrada, acrescido ou no das aspas. Caso a rotina no possa ser executada, o tratamento de exceo do mtodo retornar o mesmo valor de entrada.

Seo 6 Gravando os dados na Tabela de Alunos


O principal processo da classe Alunos a rotina de insero dos dados na Tabela de Alunos. O processo de insero deve obedecer s regras de chave primria, respeitar os tipos de dados de cada coluna e a necessidade de cadastro dos campos obrigatrios. Sendo assim, no possvel que duas matrculas com mesmo valor sejam cadastradas, bem como campos do tipo numeral no podero ser preenchidos com valores literais e vice-versa. Basicamente a rotina de insero de dados, chamada de CadastrarDados, uma rotina de montagem do comando Insert. Um comando Insert formado pelo nome das colunas que sero preenchidas e o valor de cada coluna. A sintaxe do comando Insert : insert into tabela (colunas) values (valores);.

190

Banco de Dados II

As regras adotadas no cdigo de insero de dados foram: solicitar o valor de cada campo da Tabela de Alunos ao usurio do sistema. O nome de cada campo est armazenado no vetor chamado Campos; armazenar no vetor Valores o valor informado pelo usurio, por meio do mtodo JOptionPane. showInputDialog; vericar se a matrcula informada j foi cadastrada no sistema; vericar se o campo informado corresponde informao de Doador de Orgos, caso seja, gravar 1 ou 0 nesse campo; vericar quais os campos foram informados pelo usurio e armazenar os nomes fsicos de cada coluna e o seu valor de cadastro por meio dos atributos Colunas e Dados; solicitar a conrmao do cadastro. Veja essas regras codicadas em Java:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 public void CadastrarDados(){ int i=0,itens=0,j=0; String Escolha = S; String Mensagem = Conrma o Cadastro dos Seguintes Dados: \n; String Colunas=,Dados=,Operacao=; String ValorLido=; JOptionPane.showMessageDialog(null, Cadastro de ALUNOS \n+ Os campos com * so Obrigatrios!); String Valores[] = new String[19]; while (i < 19){ Valores[i] = JOptionPane.showInputDialog(null,Campos[i]); ValorLido = Valores[i]; do{ if (i == 0 && MatriculaExiste(ValorLido)){ JOptionPane.showMessageDialog(null,Este Nmero de Matrcula j foi usado!\n+ Informe um novo cdigo para Matrcula); ValorLido = JOptionPane.showInputDialog(null,Campos[i]); Valores[i] = ValorLido; }
SEGUE

Unidade 8

191

Universidade do Sul de Santa Catarina

22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64

}while(i==0 && MatriculaExiste(ValorLido)); if( Valores[i].equals() && (Campos[i].indexOf(*) != -1)){ JOptionPane.showMessageDialog(null, Este campo obrigatrio \n+ Por Favor, recadastre-o!); } else{ i++; } if (!ValorLido.equals()) itens++; } if (!Valores[18].equals()){ if (Valores[18].charAt(0) == S || Valores[18].charAt(0) == s) Valores[18] = 1; //Sim else Valores[18] = 0; //No } j=0; for(i=0;i<19;i++){ if (!Valores[i].equals()){ Mensagem = Mensagem + Campos[i] + : + Valores[i]+\n; Colunas=Colunas+NomesColunas[i]; Dados =Dados +FormatoCampo(i+1,Valores[i]); if (j < itens-1){ Colunas=Colunas + ,; Dados = Dados + ,; } j++; } } Escolha = JOptionPane.showInputDialog(Mensagem + \n Sim(S) - No(N)); if (Escolha.equalsIgnoreCase(S)){ Operacao = insert into alunos(+Colunas+) values (+Dados+); try{ Comando.ExecutarComando(Operacao); }catch(Exception e){ System.out.println(e.getMessage()); } } }

192

Banco de Dados II

Abaixo um comentrio sobre as principais operaes realizadas pelo mtodo de cadastro de alunos.
1 2 3 4 5 6 7 9 11 12 14 15 24 31 34 41 42 43 44 45 46 54 55 Nome do mtodo. Atributos para obteno do nome dos campos, total de campos cadastrados e obteno do nome fsico das colunas. Atributo para conrmao ou no do cadastro. Atributo que apresentar os dados informados pelo usurio. Atributo para armazenamento dos nomes das colunas, do valor de insero de cada coluna e armazenamento do comando Insert gerado. Atributo para armazenamento do valor informado pelo usurio. Um aviso para o usurio de que os campos com * so obrigatrios. Atributo para armazenamento de todos os valores informados pelo usurio do sistema. Realiza um lao para a solicitao do valor de cadastro para todos os campos da tabela. Solicita o valor do campo. Repete o cadastro da matrcula at que seja informado um cdigo que ainda no foi usado. Verica se o valor informado o da matrcula e se a mesma j foi cadastrada. Verica se o campo cadastrado um campo obrigatrio, ou seja, possui um asterisco (*). Verica se o valor do campo cadastrado diferente de vazio. Incrementa o contador de campos cadastrados. Verica se o campo informado o campo de Doao de Orgos. Se for, troca o valor Sim por 1 e o valor No por 0. Verica os valores cadastrados para todos os campos. Se o valor no for vazio. Monta a mensagem com o nome do campo e o valor cadastrado. Monta o atributo Colunas com os nomes fsicos dos campos preenchidos; Monta o atributo Dados com os valores informados para cada campo, vericando se o valor deve ou no car entre aspas. Se no for o ltimo campo cadastrado, acrescenta uma vrgula para separar cada nome de coluna e cada valor informado pelo usurio. Apresenta os valores cadastrados pelo usurio e solicita a conrmao do cadastro. Se a escolha for sim, grava os dados na tabela de alunos.

Seo 7 Excluindo os dados da Tabela de Alunos


Para realizar a excluso dos dados da Tabela de Alunos preciso especicar um campo de referncia que identique de forma nica o registro do aluno a ser excludo. Como a Tabela de Alunos possui como chave primria a matrcula, a excluso usar essa informao como referncia para identicao e excluso do aluno.

Unidade 8

193

Universidade do Sul de Santa Catarina

Porm, antes de exclu-lo, necessrio que se verique se o aluno pesquisado existe ou no na base de dados. Com base nessas premissas, o cdigo do mtodo de excluso de alunos ter a seguinte estrutura:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 public void ExcluirPorMatricula(){ String Escolha = S; String Saida = ; String Mat = JOptionPane.showInputDialog(Informe a Matrcula para Excluso:); try{ Comando.ExecutarComando(select * from alunos where Matricula = + Mat); ResultSet rs = Comando.getResultadoSQL(); while(rs.next()) { Saida = Matrcula: + rs.getString(Matricula)+\n+ Nome : + rs.getString(Nome); } if (Saida.equals()){ JOptionPane.showMessageDialog(null,Matrcula Inexistente!); } else{ JOptionPane.showInputDialog(Conrma a excluso do Aluno:\n+ Saida+\n+ Sim(S) - No(N)); if (Escolha.equalsIgnoreCase(S)) Comando.ExecutarComando( Delete from alunos where Matricula = + Mat); } }catch(Exception e){ System.out.println(Excluso no pode ser feita!+e.getMessage()); } }

Para saber como funciona essa implementao, veja a descrio a seguir:


2 3 4 6 7 8 11 13 16 20 Conrma a excluso. Atributo para apresentao do nome e da matrcula do aluno selecionado. Solicita a matrcula do aluno a ser excludo. Seleciona os alunos com a matrcula informada. Armazena o resultado do Select. Varre todos os registros retornados pelo Select. Armazena o nome e a matrcula do aluno localizado pelo Select. Se o atributo Sada estiver vazio, porque nenhum aluno foi localizado. Se o atributo Sada diferente de vazio, ento apresenta na tela o nome e a matrcula do aluno e solicita a conrmao da excluso. Se a escolha for Sim, exclui os alunos com a matrcula informada.

194

Banco de Dados II

Seo 8 Alterando os dados da Tabela de Alunos


O processo de alterao de dados do aluno muito semelhante ao processo de excluso, pois tanto a operao de excluso quanto a operao de alterao s podem ser realizadas se o aluno pesquisado existir no banco de dados. Com relao alterao, o usurio do sistema poder visualizar o valor cadastrado para cada campo da tabela e alter-lo se assim desejar, com exceo da matrcula, pois esse campo nico por se tratar de uma chave primria. O aluno poder ter qualquer um dos seus dados alterados, menos a matrcula. O processo de alterao possui as regras de pesquisas j utilizadas no processo de excluso para saber se o aluno est ou no cadastrado e utiliza tambm as regras de cadastramentos dos dados para a nova insero de valores em cada campo da tabela. Por isso, que ao analisar o cdigo-fonte da rotina de alterao, voc encontrar muitas expresses que j so de seu conhecimento. Veja a seguir a codicao do processo de alterao de dados dos alunos:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 public void AlterarPorMatricula(){ int i; String Valores[] = new String[19]; String Saida = ; String Escolha = S; String ValorLido = ; String Colunas = ; String Dados = ; String Operacao = ; String Mat = JOptionPane.showInputDialog( Informe a Matrcula para Alterao:); try{ Comando.ExecutarComando( select * from alunos where Matricula = + Mat); ResultSet rs = Comando.getResultadoSQL(); if (rs.next()){ Rsmd = rs.getMetaData(); for (i=1;i <= Rsmd.getColumnCount();i++){ Valores[i-1] = rs.getString(Rsmd.getColumnName(i));
SEGUE

Unidade 8

195

Universidade do Sul de Santa Catarina

20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61

if (i == 19){ if(Valores[i-1].equals(1)) Valores[i-1] = Sim; else Valores[i-1] = No; } Saida = Saida + Campos[i-1]+:+Valores[i-1]+\n; } } if (Saida.equals()){ JOptionPane.showMessageDialog(null,Matrcula Inexistente!); } else{ Escolha = JOptionPane.showInputDialog(Conrma a alterao do Aluno:\n+ Saida+\n+ Sim(S) - No(N)); if (Escolha.equalsIgnoreCase(S)){ i=2; while (i<=19){ Valores[i-1] = JOptionPane.showInputDialog( Campos[i-1],Valores[i-1]); if( Valores[i-1].equals() && (Campos[i-1].indexOf(*) != -1)){ JOptionPane.showMessageDialog(null, Este campo obrigatrio \n+ Por Favor, recadastre-o!); } else{ if (i==19 && (!Valores[i-1].equals())){ if (Valores[i-1].charAt(0) == S || Valores[i-1].charAt(0) == s) Valores[i-1] = 1; //Sim else Valores[i-1] = 0; //No } i++; } } Operacao = Update Alunos set ; for (i=1;i<19;i++){ if (!Valores[i].equals()){ Operacao = Operacao + NomesColunas[i] + =+ FormatoCampo(i+1,Valores[i]);
SEGUE

196

Banco de Dados II

62 63 64 65 66 67 68 69 70 71 72 73 74 75 }

if (i < 18){ Operacao = Operacao + ,; } } } Operacao = Operacao + where Matricula = + Mat; Comando.ExecutarComando(Operacao); } } }catch(Exception e){ System.out.println(Alterao no pode ser feita!+e.getMessage()); }

Como essa rotina um pouco mais extensa que as anteriores, vou descrev-la por blocos, para facilitar o seu entendimento, ok?
public void AlterarPorMatricula(){ int i; String Valores[] = new String[19]; String Saida = ; String Escolha = S; String ValorLido = ; String Colunas = ; String Dados = ; String Operacao = ; String Mat = JOptionPane.showInputDialog( Informe a Matrcula para Alterao: );

Nessas linhas iniciais da rotina de alterao so apresentados os atributos de armazenamento e realizado o processo de solicitao da matrcula do aluno que ter os dados alterados.

Unidade 8

197

Universidade do Sul de Santa Catarina

Comando.ExecutarComando( select * from alunos where Matricula = + Mat); ResultSet rs = Comando.getResultadoSQL(); if (rs.next()){ Rsmd = rs.getMetaData(); for (i=1;i <= Rsmd.getColumnCount();i++){ Valores[i-1] = rs.getString(Rsmd.getColumnName(i)); if (i == 19){ if(Valores[i-1].equals(1)) Valores[i-1] = Sim; else Valores[i-1] = No; } Saida = Saida + Campos[i-1]+:+Valores[i-1]+\n; } }

Nesse bloco de comandos, o primeiro processo corresponde execuo de um comando Select para vericar se a matrcula pesquisada est cadastrada no banco de dados. A condio rs.next() ir retorna True (verdadeiro) caso exista um aluno cadastrado com o cdigo de matrcula pesquisado. Com a utilizao da classe ResultSetMetaData possvel realizar um lao que passe por todas as colunas da Tabela de Alunos, iniciando na coluna da posio 1 at a coluna nal, representada pelo mtodo getColumnName(). Com base na coluna acessada, utilizando-se do mtodo getString(), os valores de cada coluna da tabela, ou seja, os dados j cadastrados no banco de dados, so armazenados no vetor chamado Valores. Como o campo da Tabela de Alunos, chamado Doador, um inteiro, ali s pode ser armazenado um valor 1 quando o aluno doador e um valor 0 quando ele no doador. Para evitar que seja apresentada uma mensagem do tipo, Doador = 1, feita uma converso de 1 para Sim e 0 para No. Todos os dados, como nome do campo e valor do campo, so armazenado no atributo do tipo string chamado Sada.

198

Banco de Dados II

if (Saida.equals()){ JOptionPane.showMessageDialog(null,Matrcula Inexistente!); } else{ Escolha = JOptionPane.showInputDialog(Conrma a alterao do Aluno:\n+ Saida+\n+ Sim(S) - No(N)); if (Escolha.equalsIgnoreCase(S)){ i=2; while (i<=19){ Valores[i-1] = JOptionPane.showInputDialog( Campos[i-1],Valores[i-1]); if( Valores[i-1].equals() && (Campos[i-1].indexOf(*) != -1)){ JOptionPane.showMessageDialog(null, Este campo obrigatrio \n+ Por Favor, recadastre-o!); } else{ if (i==19 && (!Valores[i-1].equals())){ if (Valores[i-1].charAt(0) == S || Valores[i-1].charAt(0) == s) Valores[i-1] = 1; //Sim else } i++; } } Valores[i-1] = 0; //No

Se o atributo Sada estiver com o valor de nulo, vazio, isso signica que a matrcula pesquisada no existe no banco de dados. Caso contrrio, ser solicitado ao usurio o valor de cada campo da tabela para que ele faa um recadastramento. No processo de recadastramento, por meio do JOptionPane. showInputDialog, o usurio verica o nome do campo pelo atributo Campos[i-1] e visualiza o valor atual cadastrado, pelo do atributo Valores[i-1]. Caso o valor no precise ser alterado, basta que ele clique no boto Ok, na janela que se abriu. Nos campos obrigatrios, ser necessrio que o usurio informe um valor, caso contrrio o sistema mandar uma mensagem e s continuar o cadastro quando a regra de obrigatoriedade for obedecida. Para o campo Doador, ser feita uma converso de Sim para 1 e No para 2.

Unidade 8

199

Universidade do Sul de Santa Catarina

Operacao = Update Alunos set ; for (i=1;i<19;i++){ if (!Valores[i].equals()){ Operacao = Operacao + NomesColunas[i] + =+ FormatoCampo(i+1,Valores[i]); if (i < 18){ Operacao = Operacao + ,; } } } Operacao = Operacao + where Matricula = + Mat; Comando.ExecutarComando(Operacao); } } }catch(Exception e){ System.out.println(Alterao no pode ser feita!+e.getMessage()); } }

Nesse bloco nal gerada a sintaxe do comando em SQL para alterao dos dados da tabela, de forma que o atributo Operao tenha um valor parecido como:
Update Alunos set Campo1 = Valor1, Campo2 = Valor2,....,CampoN=Valor N where Matricula = Valor_Procurado.

Note que no ltimo campo alterado ele no separado por vrgula, por isso a condio if(i < 18) no cdigo para vericar se a rotina est montando a sintaxe para o ltimo campo alterado da tabela. Com mais esta seo, voc pode vericar todo o processo de cadastramento e povoamento de dados da Tabela de Alunos. Mas ainda falta o processo de pesquisa de dados dos alunos, na qual o usurio informa um nome ou uma matrcula e o sistema apresenta os dados cadastrados. Mas isso assunto para prxima unidade.

200

Banco de Dados II

Por enquanto, d uma analisada no cdigo a seguir que apresenta todas as rotinas implementadas pela classe Alunos:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 import javax.swing.*; import java.sql.*; import java.util.*; class Alunos{ private ResultSetMetaData Rsmd; private ComandosSQL Comando; private String NomesColunas[] = new String [19]; private String Campos[] = {Matrcula * , Nome * , Data de Nascimento * , Idade * , CPF, RG, Nome do Pai * , Nome da Me * , Endereo * , Nmero * , Cidade * , Estado * , Bairro * , Telefone , Celular, Responsvel, Alrgico a, Grupo Sanguneo, Doador de Orgos Sim/No };

public Alunos(){ Comando = new ComandosSQL(); Comando.AbrirConexao(AcessoDB,root,virtual); if (!Comando.getConectou()){ JOptionPane.showMessageDialog(null,Erro de Conexo com Banco de Dados\n + Entre em contato com Suporte ! \n + A aplicao ser FECHADA ! ); System.exit(0); } else{
SEGUE

Unidade 8

201

Universidade do Sul de Santa Catarina

43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87

try{ Comando.ExecutarComando(select * from alunos); ResultSet res = Comando.getResultadoSQL(); GerarNomesColunas(res); }catch(Exception e){ System.out.println(Erro Gerando Nome das Colunas); } } } public boolean MatriculaExiste(String Mat){ try{ Comando.ExecutarComando(select * from alunos where Matricula = + Mat); ResultSet rs = Comando.getResultadoSQL(); return (rs.next()); }catch(Exception e){ System.out.println(Erro Pesquisando Matricula.); return true; } }

public void GerarNomesColunas(ResultSet rs){ try{ Rsmd = rs.getMetaData(); for (int i = 1; i <= Rsmd.getColumnCount(); i++) NomesColunas[i-1] = Rsmd.getColumnName(i); }catch(Exception e){ System.out.println(Erro Gerando Nome das Colunas); } } public String FormatoCampo(int Pos,String Valor){ String Saida=Valor; try{ switch(Rsmd.getColumnType(Pos)) { case Types.VARCHAR:Saida = + Valor +; break; case Types.DATE: Saida = +Valor +; break; case Types.INTEGER: Saida = Valor; break; case Types.CHAR: Saida = +Valor+;
SEGUE

202

Banco de Dados II

88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132

break; case Types.FLOAT:Saida = Valor; break; } return Saida; }catch(Exception e) { return Saida; } } public void CadastrarDados(){ int i=0,itens=0,j=0; String Escolha = S; String Mensagem = Conrma o Cadastro dos Seguintes Dados: \n; String Colunas=,Dados=,Operacao=; String ValorLido=; JOptionPane.showMessageDialog(null, Cadastro de ALUNOS \n+ Os campos com * so Obrigatrios!); String Valores[] = new String[19]; while (i < 19){ Valores[i] = JOptionPane.showInputDialog(null,Campos[i]); ValorLido = Valores[i]; do{ if (i == 0 && MatriculaExiste(ValorLido)){ JOptionPane.showMessageDialog(null,Este Nmero de Matrcula j foi usado!\n+ Informe um novo cdigo para Matrcula); ValorLido = JOptionPane.showInputDialog(null,Campos[i]); Valores[i] = ValorLido; } }while(i==0 && MatriculaExiste(ValorLido)); if( Valores[i].equals() && (Campos[i].indexOf(*) != -1)){ JOptionPane.showMessageDialog(null, Este campo obrigatrio \n+ Por Favor, recadastre-o!); } else{ i++; } if (!ValorLido.equals()) itens++; } if (!Valores[18].equals()){ if (Valores[18].charAt(0) == S || Valores[18].charAt(0) == s)
Unidade 8

SEGUE

203

Universidade do Sul de Santa Catarina

133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176

Valores[18] = 1; //Sim else Valores[18] = 0; //No } j=0; for(i=0;i<19;i++){ if (!Valores[i].equals()){ Mensagem = Mensagem + Campos[i] + : + Valores[i]+\n; Colunas=Colunas+NomesColunas[i]; Dados =Dados +FormatoCampo(i+1,Valores[i]); if (j < itens-1){ Colunas=Colunas + ,; Dados = Dados + ,; } j++; } } Escolha = JOptionPane.showInputDialog(Mensagem + \n Sim(S) - No(N)); if (Escolha.equalsIgnoreCase(S)){ Operacao = insert into alunos(+Colunas+) values (+Dados+); try{ Comando.ExecutarComando(Operacao); }catch(Exception e){ System.out.println(e.getMessage()); } } } public void ExcluirPorMatricula(){ String Valores[] = new String[19]; String Escolha = S; String Saida = ; String Mat = JOptionPane.showInputDialog(Informe a Matrcula para Excluso:); try{ Comando.ExecutarComando(select * from alunos where Matricula = + Mat); ResultSet rs = Comando.getResultadoSQL(); if (rs.next()){ Rsmd = rs.getMetaData(); for (int i = 1; i <= 2; i++) { Valores[i-1] = rs.getString(Rsmd.getColumnName(i)); Saida = Saida + Campos[i-1]+:+Valores[i-1]+\n; }
SEGUE

204

Banco de Dados II

177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219

} if (Saida.equals()){ JOptionPane.showMessageDialog(null,Matrcula Inexistente!); } else{ JOptionPane.showInputDialog(Conrma a excluso do Aluno:\n+ Saida+\n+ Sim(S) - No(N)); if (Escolha.equalsIgnoreCase(S)) Comando.ExecutarComando(Delete from alunos where Matricula = + Mat); } }catch(Exception e){ System.out.println(Excluso no pode ser feita!+e.getMessage()); } } public void AlterarPorMatricula(){ int i; String Valores[] = new String[19]; String Saida = ; String Escolha = S; String ValorLido = ; String Colunas = ; String Dados = ; String Operacao = ; String Mat = JOptionPane.showInputDialog(Informe a Matrcula para Alterao:); try{ Comando.ExecutarComando(select * from alunos where Matricula = + Mat); ResultSet rs = Comando.getResultadoSQL(); if (rs.next()){ Rsmd = rs.getMetaData(); for (i=1;i <= Rsmd.getColumnCount();i++){ Valores[i-1] = rs.getString(Rsmd.getColumnName(i)); if (i == 19){ if(Valores[i-1].equals(1)) Valores[i-1] = Sim; else Valores[i-1] = No; } Saida = Saida + Campos[i-1]+:+Valores[i-1]+\n; }
SEGUE

Unidade 8

205

Universidade do Sul de Santa Catarina

220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265

} if (Saida.equals()){ JOptionPane.showMessageDialog(null,Matrcula Inexistente!); } else{ Escolha = JOptionPane.showInputDialog(Conrma a alterao do Aluno:\n+ Saida+\n+ Sim(S) - No(N)); if (Escolha.equalsIgnoreCase(S)){ i=2; while (i<=19){ Valores[i-1] = JOptionPane.showInputDialog(null,Campos[i-1],Valores[i-1]); if( Valores[i-1].equals() && (Campos[i-1].indexOf(*) != -1)){ JOptionPane.showMessageDialog(null, Este campo obrigatrio \n+ Por Favor, recadastre-o!); } else{ if (i==19 && (!Valores[i-1].equals())){ if (Valores[i-1].charAt(0) == S || Valores[i-1].charAt(0) == s) Valores[i-1] = 1; //Sim else Valores[i-1] = 0; //No } i++; } } Operacao = Update Alunos set ; for (i=1;i<19;i++){ if (!Valores[i].equals()){ Operacao = Operacao + NomesColunas[i] + =+ FormatoCampo(i+1,Valores[i]); if (i < 18){ Operacao = Operacao + ,; } } } Operacao = Operacao + where Matricula = + Mat; Comando.ExecutarComando(Operacao); } } }catch(Exception e){ System.out.println(Alterao no pode ser feita!+e.getMessage()); } } }

206

Banco de Dados II

Sntese
Nesta unidade voc pde mais do que estudar, pde praticar as tcnicas de programao em Java para a criao de uma aplicao comercial com acesso a banco de dados. O processo de implementao de uma soluo computacional pode ser mais bem elaborado quando dividido em subprogramas, ou mtodos de programao. Dividindo-se o problema, ca simples de chegar a uma soluo desejada. No caso da classe Alunos, os processos de cadastramento, excluso e alterao foram solucionados de forma independente, para que problemas de desenvolvimento de um processo no inuenciassem negativamente em outros. Com isso, as solues foram sendo projetadas e implementadas de forma segura e, principalmente, organizada. Assim, a unio das partes com certeza vai representar um todo.

Unidade 8

207

Universidade do Sul de Santa Catarina

Atividades de auto-avaliao
1. Qual a finalidade em se criar uma rotina de verificao para valores cadastrados em colunas do tipo chave primria?

Saiba mais
HORSTMANN, C. S. Big Java. Porto Alegre: Artmed Bookman, 2004. THOMPSON, M. A. Java 2 & Banco de Dados. Erica, 2002. Na Internet: http://www.guj.com.br http://www.mundojava.com.br

208

UNIDADE 9

Criando as consultas para a Tabela de Alunos


Objetivos de aprendizagem
Aplicar a estrutura do comando Select nas pesquisas de banco de dados. Implementar e testar os processos de pesquisa de dados da Tabela de Alunos.

Sees de estudo
Seo 1 Estrutura atual da classe de cadastro de
alunos.

Seo 2 Comando de seleo. Seo 3 Preparando a rotina de consulta. Seo 4 Menu de acesso.

Universidade do Sul de Santa Catarina

Para incio de conversa


Nesta unidade voc dar continuidade ao processo de implementao das rotinas de manipulao da Tabela de Alunos do banco de dados Sabe Tudo. Talvez voc se pergunte por que essas rotinas no foram apresentadas na unidade anterior. Pois bem, a nalidade de separar os processos de cadastramento, excluso e alterao de dados do processo de seleo apenas para facilitar a sua compreenso, nada mais que isso. Como voc conhece o processo de insero e manipulao de dados, agora hora de montar as rotinas de seleo de dados a m de fechar todas as regras de negcio referentes Tabela de Alunos. Preparado?

Acredito que sim, ento, vamos l.

Seo 1 Estrutura atual da classe de cadastro de alunos


Antes de partir para as rotinas de seleo de dados, essencial que voc tenha em mente a estrutura da classe Alunos, que foi apresentada e implementada na unidade anterior. Na tabela a seguir, apresentada a estrutura da classe Alunos com seus atributos e mtodos de trabalho.

210

Banco de Dados II

Alunos Atributos ResultSetMetaData Rsmd; ComandosSQL Comando; String NomesColunas[] String Campos[] Mtodos boolean MatriculaExiste(String Mat) void GerarNomesColunas(ResultSet rs) String FormatoCampo(int Pos,String Valor) void CadastrarDados() void ExcluirPorMatricula() void AlterarPorMatricula()

Apesar de se tratar de uma estrutura simples, essa classe tem rotinas bem funcionais, como voc deve ter notado ao implement-la. Caso voc no tenha implementado a classe, seria muito bom que voc realizasse essa tarefa para interagir diretamente com os cdigos em Java, e mais do que isso, para que voc insira na implementao o seu toque pessoal, com as rotinas que voc est acostumado a fazer. As implementaes apresentadas aqui e na unidade anterior possuem as caractersticas da minha forma de programar e com certeza em muitos casos voc se indagou: Eu fao diferente!. Isso mais do que normal, por isso muito importante que voc implemente o cdigo e verique o que voc pode fazer de diferente, personalizando a sua implementao. S no esquea que o resultado nal tem que ser o mesmo, ou seja, funcionar de acordo com as regras de negcio do sistema.

Seo 2 Comando de seleo


De forma bem resumida, necessrio que voc compreenda o funcionamento de um comando de seleo. Basicamente, um comando de Select representa duas informaes: as colunas que se deseja selecionar; as linhas que atendem o ltro da seleo.

Unidade 9

211

Universidade do Sul de Santa Catarina

Por isso, a sintaxe mais simples de um comando Select :


Select Colunas from Tabela where Condio Lgica;

Um comando Select um comando de retorno, sendo assim, sempre haver uma informao de sada, nem que seja para indicar que nenhum registro atendeu as condies de ltro do comando, ou seja, o retorno foi nenhuma linha selecionada.

O que pode variar num comando Select?

Muito pouco. Partindo do princpio que se est selecionando dados de uma mesma tabela, o que pode variar : o nome das colunas selecionadas; os nomes das colunas usadas na gerao da condio de ltro. Por exemplo, usando a Tabela de Alunos como referncia, podese montar um comando de seleo da seguinte forma:
Select ? from Alunos where ? = ?.

Calma, no se assuste! Apenas pense que no lugar de cada smbolo de ? pode ser inserida uma informao de acordo com o comando de seleo desejado. Selecionar todos os dados dos alunos chamados Marcelo:
Select * from Alunos where Nome = Marcelo.

Selecionar todos os dados dos alunos que residem em Palhoa:


Select * from Alunos where Cidade = Palhoa.

212

Banco de Dados II

Sendo assim, possvel chegar concluso que o comando Select precisa de trs parmetros para funcionar: nome das colunas; nome do campo de ltro; valor do campo de ltro. E essa a regra que ser adotada para a criao da rotina de consulta na base de dados de alunos, que ser implementada em Java por meio de um mtodo com a seguinte estrutura:
public void Consultar(String Colunas, String Campos, String Valores).

Veja sobre esse assunto na prxima seo.

Seo 3 Preparando a rotina de consulta


Nesta seo voc ter contato com as rotinas necessrias para a gerao da sintaxe do comando Select desejado. preciso, primeiro, apresentar duas estruturas utilizadas na classe Alunos:
Nomes Colunas Matricula Nome ... Grupo_Sangue Doador

Essa estrutura representa o nome fsico das colunas da Tabela de Alunos, utilizada para denio dos campos que sero selecionados por meio do comando Select e no possui interao com usurio do sistema, pois ele no precisa saber os nomes das colunas para conseguir utilizar o sistema. A outra estrutura a seguinte:
Campos Matrcula * Nome * ... Grupo_Sanguneo Doador de Orgos

Essa estrutura representa os nomes de cada campo da Tabela de Alunos, porm na forma que ser apresentada ao usurio, inclusive com a graa correta.

Unidade 9

213

Universidade do Sul de Santa Catarina

Essas duas estruturas trabalham em paralelo, pois utilizam os mesmos ndices de armazenamento, veja:
Nomes Colunas Campos 0 Matricula Matrcula * 1 Nome Nome * ... ... 17 Grupo_Sangue Grupo_Sanguneo 18 Doador Doador de Orgos

Dessa forma, um comando de seleo com a sintaxe: Select Matricula,Nome,Grupo_Sangue from Alunos where Matricula = 10; Esse comando de seleo utilizar os nomes de colunas e de campos das posies 0,1 e 17. Entretanto, para o comando de seleo, executado pelo banco de dados e que retornar ao Java os dados que atendem a condio de pesquisa, as colunas Matricula, Nome e Grupo_Sangue representam as posies 1, 2, 3. Para ajudar na sua compreenso, veja o diagrama a seguir:
GRFICO 9.1 - FORMA DE REPRESENTAO DE UM SELECT NA CLASSE ALUNOS

Para tornar essa forma de representao simples, independente do comando Select gerado, preciso que ao se especicar um comando de seleo, a aplicao em Java identique os nomes das colunas fsicas e de apresentao, com seus respectivos ndices e o valor representativo no retorno do Select.

214

Banco de Dados II

Para isso, sero necessrios dois novos mtodos na classe de Alunos. O primeiro mtodo, chamado de Posio, retorna a posio do nome fsico da coluna selecionada em relao estrutura de Nomes de Colunas. O cdigo em Java car assim:
1 2 3 4 5 6 public int Posicao(String Item){ int i=0; while((i < 19) && ((!NomesColunas[i].equalsIgnoreCase(Item))) i++; return (i+1); }

Esse mtodo recebe um item como parmetro. Por meio de um lao condicional se faz a comparao de todas as palavras armazenadas no vetor NomesColunas com o valor do item informado. O lao se encerra quando todas as posies j tiverem sido comparadas ou quando o item procurado igual a palavra armazenada no vetor. Para cada item pesquisado, o sistema precisa saber qual a sua posio dentro do vetor NomesColunas. Sendo assim, para cada coluna selecionada preciso armazenar o seu ndice na estrutura NomesColunas. O objetivo principal saber quais colunas fazem parte do Select montado, entre as 19 colunas que compem a Tabela de Alunos. No caso do Select :
Select Matricula,Nome,Grupo_Sangue from Alunos where Matricula = 10;

O resultado seria:
Nomes Colunas 0 Matricula 1 Nome ... 17 Grupo_Sangue 18 Doador

Unidade 9

215

Universidade do Sul de Santa Catarina

Ou seja, das 19 colunas da tabela de Alunos, os ndices 0,1 e 17 esto sendo requisitados. Sendo que a coluna Matrcula representada pela expresso Matrcula * , a coluna Nome pela expresso Nome * e a coluna Grupo_Sangue pela expresso Grupo Sanguneo. Para armazenar os ndices das colunas requisitadas ser implementado o seguinte mtodo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 public Vector MontarIndices(String Colunas){ Vector Indices = new Vector(); String Coluna=; Colunas = Colunas + ,; for (int i=0;i< Colunas.length();i++){ if (Colunas.charAt(i) != ,){ Coluna = Coluna + Colunas.charAt(i); } else{ Indices.addElement(Posicao(Coluna)+); Coluna = ; } } return Indices; }

Esse mtodo recebe o nome das colunas que sero selecionadas, algo como Nome, Matricula,Cidade e retorna um vetor dinmico do tipo Vector.

Esse vetor chamado de dinmico porque o seu tamanho definido durante a execuo do programa a cada nova insero de um elemento.

Para montar os ndices, realizado um lao que varre caractere por caractere do parmetro Colunas, que representa cada coluna selecionada, porm separadas por vrgula - com exceo da ltima coluna que no possui uma vrgula no nal. Por isso o mtodo insere no nal do parmetro Colunas uma vrgula (Colunas = Colunas + ,);

216

Banco de Dados II

Veja a representao a seguir:


GRFICO 9.2 - SEPARADOR DE COLUNAS SELECIONADAS

Toda vez que uma vrgula encontrada como smbolo dentro do parmetro Colunas, signica que uma coluna selecionada foi denida. Pelo mtodo posio inserido no vetor de ndices a posio em que essa coluna se encontra dentro do vetor de NomesColunas. Como a denio dos campos que sero buscados uma interao direta com o usurio do sistema, preciso uma interface na qual o usurio especique quais os campos sero selecionados, porm de forma amigvel. A seguir apresentado um cdigo-fonte que implementa a interface de solicitao dos campos que deniro o comando Select.

Unidade 9

217

Universidade do Sul de Santa Catarina

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

public String SelecionarItens(){ char Continua = S, Escolha = S; int i=0; String Escolhidas = ; do{ if ((Escolhidas.length() > 0 ) && (Escolha == S || Escolha == s)) Escolhidas = Escolhidas + ,; Escolha = JOptionPane.showInputDialog( Selecionar o campo: + Campos[i] + \n S-Sim N-No,S).charAt(0); if(Escolha == S || Escolha == s){ Escolhidas = Escolhidas + NomesColunas[i]; } i++; Continua = JOptionPane.showInputDialog( Deseja Sair? Sim(S) - No (N),N).charAt(0); }while (i < 19 && (Continua == N || Continua == n)); return Escolhidas; }

Esse mtodo solicita uma conrmao do usurio com relao aos campos da tabela que ele deseja visualizar no resultado da execuo do Select. Para cada campo apresentada uma tela, com o nome do campo e a solicitao se o mesmo deve ser includo na seleo. Por padro, a resposta vem sempre com o valor Sim (S). Como os campos so separados por vrgula, a cada insero de uma coluna de pesquisa, uma vrgula includa ao lado. O processo se repete at que todos os campos sejam informados ou o usurio cancele a operao, que por padro vem com o valor No (N). Com essas rotinas prontas, o prximo passo a criao do mtodo de seleo, que possui o seguinte cdigo:

218

Banco de Dados II

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42

public void Consultar(String Colunas, String Campo,String Valor){ String Saida = ; Vector Selecionados = MontarIndices(Colunas); char Continua = S; String Valores[] = new String[19]; int i=0,pos=0; try{ Comando.ExecutarComando(select + Colunas + from alunos where + Campo + like % + Valor +%); ResultSet rs = Comando.getResultadoSQL(); while ((Continua == S || Continua == s) && (rs.next())){ Saida = ; Rsmd = rs.getMetaData(); i=1; pos=0; while( i < 19){ if (Selecionados.contains(i+)){ Valores[pos] = rs.getString(Rsmd.getColumnName(pos+1)); if (i == 19 && Selecionados.contains(i+)){ if(Valores[pos].equals(1)) Valores[pos] = Sim; else Valores[pos] = No; } Saida = Saida + Campos[i-1]+:+Valores[pos]+\n; pos++; } i++; } JOptionPane.showMessageDialog(null,Saida); Continua = JOptionPane.showInputDialog( Continuar a Listagem? Sim(S) - No (N)).charAt(0); } if (Saida.equals()){ JOptionPane.showMessageDialog(null,Campo + Inexistente!); } }catch(Exception e){ System.out.println(Consulta no pode ser feita!+e.getMessage()); } }

Unidade 9

219

Universidade do Sul de Santa Catarina

Esse mtodo permite a consulta de qualquer registro na Tabela de Alunos. Para que ele funcione so necessrios os parmetros colunas, campo de ltro e valor de ltro. O mtodo apresenta na telas os campos solicitados pelo usurio da aplicao e o valor de cada campo. O processo se repete at que todos os cadastros sejam visualizados ou o cliente cancele a operao. Esse mtodo destinado s pesquisas que envolvem descriminao de quais colunas sero apresentadas na tela, caso se deseje a pesquisa de todos os campos da tabela, o mtodo para isso possui o seguinte cdigo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 public void ConsultarTodos(){ String Saida = ; char Continua = S; String Valores[] = new String[19]; int i=0; try{ Comando.ExecutarComando(select * from alunos); ResultSet rs = Comando.getResultadoSQL(); while ((Continua == S || Continua == s) && (rs.next())){ Saida = ; Rsmd = rs.getMetaData(); for (i=0; i < Rsmd.getColumnCount();i++){ Valores[i] = rs.getString(Rsmd.getColumnName(i+1)); if (i == 18){ if(Valores[i].equals(1)) Valores[i] = Sim; else Valores[i] = No; } Saida = Saida + Campos[i]+:+Valores[i]+\n; } JOptionPane.showMessageDialog(null,Saida); Continua = JOptionPane.showInputDialog( Continuar a Listagem? Sim(S) - No (N),S).charAt(0); } }catch(Exception e){ System.out.println(Consulta no pode ser feita!+e.getMessage()); } }

220

Banco de Dados II

Seo 4 Menu de acesso


Para facilitar a interao entre o usurio do sistema e as regras de negcio da manipulao de dados da Tabela de Alunos, essencial um menu de opes. A criao desse menu feita pelo seguinte cdigo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 public void Menu(){ int op=0; String ColunasPesq = ; String Procura = ; do{ op = Integer.parseInt(JOptionPane.showInputDialog( Cadastro de Alunos \n+ 1-Cadastrar\n+ 2-Excluir\n+ 3-Alterar\n+ 4-Consultar por Nome\n+ 5-Consultar por Matrcula\n+ 6-Consultar Todos\n+ 7-Sair,7)); switch (op){ case 1:CadastrarDados(); break; case 2:ExcluirPorMatricula(); break; case 3:AlterarPorMatricula(); break; case 4:ColunasPesq = SelecionarItens(); Procura = JOptionPane.showInputDialog(Nome para Pesquisa:); Consultar(ColunasPesq,Nome,Procura); break; case 5:ColunasPesq = SelecionarItens(); Procura = JOptionPane.showInputDialog(Matrcula para Pesquisa:); Consultar(ColunasPesq,Matricula,Procura); break; case 6:ConsultarTodos(); break; } }while(op != 7); }

Unidade 9

221

Universidade do Sul de Santa Catarina

Esse mtodo implementa uma chamada para cada um dos mtodos vistos anteriormente, permitindo a interao do usurio com todas as funcionalidades do sistema. Essa chamada ter a seguinte interface:

FIGURA 9.1 - TELA DE MENU

Para usar a classe Alunos preciso que voc crie uma nova classe que instancie a classe Alunos e execute a chamada do mtodo Menu. Veja:
1 2 3 4 5 6 7 class Dados_Alunos{ public static void main(String args[]){ Alunos A = new Alunos(); A.Menu(); System.exit(0); } } Para concluir esta unidade, consulte na Midiateca a codificao completa da classe, que apesar de simples muito funcional e permite todas as regras de negcio da Tabela de Alunos.

222

Banco de Dados II

Sntese
Nesta unidade voc pde praticar as tcnicas de programao em Java para a criao de mtodos que permitem a seleo de dados em tabelas. A base de funcionamento dos mtodos est fundamentada na sintaxe do comando Select, que pode ser dividido em: colunas selecionadas e condio para seleo. O principal objetivo desses mtodos implementados permitir que os comandos de seleo sejam criados sem que o usurio do sistema tenha que saber como um comando em SQL funciona, isso deve ser transparente para ele, porm deve ser dominado pelo programador do software.

Atividade de auto-avaliao
1. O processo de implementao de um consulta em Java pode ser considerado um gerador de comandos?

Unidade 9

223

Universidade do Sul de Santa Catarina

Saiba mais
DEITEL, H. M.; DEITEL,P. J. Java: como programar. 4. ed. Bookman, 2003. HORSTMANN, C. S. Big Java. Artmed Bookman, 2004. THOMPSON, M. A. Java 2 & Banco de Dados. Erica, 2002.

224

Para concluir o estudo


Caro aluno, Nesta disciplina a minha inteno foi apresent-lo ao mundo dos sistemas de bancos de dados, possibilitando a voc a compreenso do seu papel como um prossional que est envolvido com armazenamento e gerenciamento de informaes. Porm, alm de gerenciar dados necessrio que voc compreenda como funciona a integrao de uma ferramenta de banco de dados e um sistema desenvolvido em linguagem de programao. Acredito que para alguns os comandos e tecnologias aqui apresentadas talvez no fossem novidades, no entanto espero que a disciplina tenha contribudo para um aprimoramento ao seu conhecimento, independente dos seus conhecimentos adquiridos anteriormente. Tenho certeza que esta disciplina tambm permitiu um amadurecimento no seu conhecimento da linguagem de programao em Java e principalmente nos conceitos da programao orientada a objetos. Acredito que muitas perguntas ainda se formam na sua mente, porm, este o meu papel como autor, fomentar a curiosidade e estimular a busca por novos conhecimentos. Espero que atravs das ferramentas disponibilizadas pelo ambiente de ensino a distncia voc possa baixar o cdigo fonte de toda a soluo proposta aqui e tenha a capacidade de dar um toque pessoal na soluo. Quem sabe, voc comea uma nova carreira de programador e analista de sistemas?

Universidade do Sul de Santa Catarina

Espero ter atingido pelo menos o objetivo de plantar a semente da busca pela informao. Parabns, voc acaba de dar mais um grande passo rumo ao objetivo maior que se tornar um prossional que domine a tecnologia de banco de dados e tenha a capacidade de desenvolver solues computacionais que atendam as necessidades de um mercado to competitivo. Se a caminhada parecia longa, que bom, voc acaba de encurtla! Desejo que esta sua caminhada te aproxime cada vez mais do seu objetivo maior, mesmo que em alguns momentos o nal da caminhada se apresente mais distante, levante a cabea, tome mais flego, e rumo ao sucesso.

Professor Marcelo Medeiros

226

Sobre o professor conteudista


Marcelo Medeiros bacharel em Cincias da Computao pela Universidade Regional de Blumenau e professor da Unisul desde 1995, na qual leciona as disciplinas de Banco de Dados, Programao e Estrutura de Dados para os cursos de Engenharia, Cincia da Computao e Sistemas de Informao. Atualmente participa do projeto de Incubadora da Unisul, desenvolvendo projetos de software na rea de automao e segurana via IP. Atua como consultor junto a empresas no desenvolvimento de novos produtos de informtica.

Referncias
ANSELMO, Fernando. Tudo que voc queria saber sobre JDBC. Visual Books: 2001. __________.Aplicando Orientao a Objetos em Java.Visual Books: 2005. COSTA,Luis Carlos da.Java para Iniciantes.Cincia Moderna:2002. CHEN, Peter. Modelagem de dados: a abordagem entidaderelacionamento para projeto lgico. So Paulo: Makron Books, 1990. DATE, C J. Bancos de dados: fundamentos. Rio de Janeiro: Campus, 1985. _________. Introduo a sistema de banco de dados. 8. ed. Rio de Janeiro: Campus, 1990. DEITEL, H.M.;DEITEL,P.J.Java-ComoProgramar.Sexta edio.Ed. Pearson,2005. FILHO,Trajano Leme. Metodologia de Desenvolvimento de Sistema.So Paulo: Axcel,2003. HORSTMANN, Cay S.Big Java. Porto Alegre: Bookman, 2004. MECENAS, Ivan. Fundamentos Swing e JDBC: 2 edio. Alta Books: 2005. NIEDERAUER, Juliano. PRATES, Rubens. Mysql Guia de Referncia Rpida. So Paulo: NovaTec, 2005. RANGEL,Alexandre. Mysql-Projeto Modelagem e Desenvolvimento de Banco de Dados.Alta Books: 2005. SANTOS, Rui Rossi dos. Programando em Java 2-Teorias e Aplicaes. Axcel: 2004. SIERRA,Kathy;BATES,Bert. Java Use a cabea. Alta Books: 2005. SUHRING, Steve. Mysql A Bblia. Rio de Janeiro: Campus, 2002. THOMPSON, Marco Aurlio. Java 2 & Banco de Dados. So Paulo, rica: 2002.

Respostas e comentrios das atividades de auto-avaliao


Unidade 1
1. A maioria das profisses exige que o especialista seja formado em um curso de graduao, como mdicos e advogados. Na rea de desenvolvimento de softwares no exigncia de graduao para que um profissional execute as suas atividades. Qual a sua opinio sobre o tema? Resposta: Este tema vem sendo discutido h muito tempo por especialistas da rea e tem se tornado um tema polmico. H grupos a favor e contra, sem que se chegue a um acordo. H explanaes de ambos os grupos para justificar a sua escolha. Os grupos que so a favor da liberao da atividade de desenvolvimento de software sem a exigncia de graduao, ou diploma, se baseiam na capacidade de profissionais de outras reas em desenvolver ferramentas na rea da computao. Outra justificativa muito forte o fato deles deterem o conhecimento sobre os assuntos que no so da rea de informtica, mas que precisam ser informatizados. J os grupos que exigem o diploma, se baseiam no investimento que um aluno faz durante a sua graduao e a importncia da profisso como justificativa para se exigir o diploma. As profisses relacionadas informtica so novas, e esto em constante evoluo. Talvez por se tratar de uma atividade nova, que integra muitas outras atividades, que ainda no se tenha chegado a uma concluso sobre a obrigatoriedade do diploma ou no. Independente de graduao, diploma, o profissional que desenvolve softwares deve ter em mente que o seu trabalho to importante quanto outro qualquer, e necessita de muita dedicao, estudos e uma constante atualizao, desde equipamentos a ferramentas computacionais, pois um mercado seletivo.

Universidade do Sul de Santa Catarina

2. Quando se desenvolve um produto, como uma cadeira, uma casa, etc., durante o processo de criao possvel apresent-lo ao cliente, para seu acompanhamento. Porm, no caso de desenvolvimento de softwares no h um produto palpvel para ser apresentado. Como agir em uma situao como esta? Resposta: O desenvolvimento de software possui muitas particularidades, principalmente porque no existe um produto que possa ser apresentado ao cliente. O desenvolvimento possui etapas bem definidas, e at que se chegue a implementao, no h o que se apresentar ao cliente. Desta forma, a relao entre desenvolvedores e cliente deve ser de transparncia, confiana e cordialidade. Ele deve se sentir seguro com relao ao que ele contratou e com o que ele ter como produto final. Durante a fase de implementao muito comum que se apresente ao cliente pequenas verses do produto final para sua prvia aprovao. Estas pequenas verses so chamadas de prottipo, que alm de verificar se o projeto est no rumo certo, permitem que o cliente tenha um contato mais direto com o produto esperado.

Unidade 2
1. A utilizao de script para criao de banco de dados no obrigatrio, porm muito utilizado pelos profissionais de banco de dados. Sendo assim, o script deve possuir algumas vantagens, voc poderia citar algumas? Resposta: Organizao das tabelas; Criao automtica das tabelas do banco de dados; Facilidade em executar vrias vezes os comandos em SQL; Facilidade em realizar alteraes no modelo de banco de dados; O modelo de banco de dados se mantm atualizado e refletindo a realidade.

2. A alterao do modelo de dados deve gerar, conseqentemente, uma alterao nos script de criao do mesmo, pois, caso contrrio, o modelo no representar fielmente o banco de dados utilizado. Esta afirmao esta correta? Justifique a sua resposta. Resposta: O banco de dados fsico, criado a partir de um script, ou no, deve representar fielmente as regras e tabelas especificadas no modelo de

232

Banco de Dados II

dados. O modelo de dados representa graficamente a forma na qual os dados so armazenados e estruturados no modelo fsico. Sendo assim, o modelo de dados um espelho do banco de dados criado. Se a criao de um banco de dados realizada a partir de um script, qualquer alterao no modelo deve ser atualizada no script, e viceversa.

3. O MySQL permite a execuo de um script de criao de tabelas de um banco de dados sem que tenha sido especificado antes qual o database usado? Caso isso no seja possvel, como garantir que as tabelas sempre sero criadas no database correto ao se executar o script? Resposta: Como o database representa um conjunto de tabelas, caso o usurio tente criar um conjunto de tabelas sem especificar em qual database, o MySQL no permite a criao do modelo de dados. Para evitar que este problema ocorra, a melhor soluo inserir no script de criao do modelo, na primeira linha o comando use seguido do database que deve ser aberto. Desta forma, a criao do modelo ocorrer sempre no local correto. Exemplo: use SabeTudo;

Unidade 3
1. O Java uma linguagem de programao atual, moderna e muito utilizada. O profissional que um especialista nesta linguagem de programao possui grandes chances de atuar no mercado atual. Sendo assim, o especialista nesta linguagem no precisa se preocupar, pois estar sempre garantido no mercado, dado que muito difcil uma linguagem de programao deixar de ser usada, sobretudo a linguagem Java. Esta afirmao correta? Qual a sua opinio? Resposta: No. Qualquer profissional, independentemente da rea de atuao, precisa se atualizar. Na rea de informtica isto se torna ainda mais verdade, pois uma rea nova, em que as mudanas acontecem de forma constante e rpida. A cada instante novas tecnologias e metodologias surgem, e o profissional que no estiver atualizado, passa a ficar obsoleto. So muitas as tecnologias que surgiram como a melhor soluo, e pouco tempo depois, sumiram do mercado, levando com elas os profissionais que tinham ali a nica forma de exercer as suas atividades.

233

Universidade do Sul de Santa Catarina

Unidade 4
1. Uma caracterstica fundamental num driver de conexo com banco de dados a sua transparncia, ou seja, quanto maior for a sua abstrao para o programador, melhor a ferramenta. Sendo assim, pode-se afirmar que o programador e o especialista em banco de dados no precisam saber como funciona o driver, mas sim, saber como tirar o melhor proveito dele. Esta afirmativa correta? Justifique sua resposta. Resposta: Sim, correta. Quanto maior o nvel de abstrao do driver de conexo, melhor para o programador e para o especialista de banco de dados. Estes dois profissionais no precisam saber como o driver foi implementado, qual linguagem foi usada, apenas precisam ter certeza de que o driver confivel e funciona de acordo com as suas necessidades.

2. O uso das Fontes de Dados uma forma de abstrao para o programador? Resposta: Sim. A partir do uso da fonte de dados, o programador no precisa saber o local em que o banco de dados est conectado, quem o usurio administrador e a senha de acesso. Tudo isso abstrado pelo uso de um apelido para fonte de dados, o que tende a facilitar a sua vida durante o processo de implementao.

Unidade 5
1. O uso de ferramentas que auxiliam o profissional de banco de dados com interao com a analise de sistemas e programao, as chamadas ferramentas CASE, podem facilitar o processo de implementao a ponto que no necessite de um especialista? Resposta: Acredito que no, a maioria das chamadas ferramentas CASE um auxlio ao especialista. Todo o processo de analise de requisitos e funcionalidades de um sistema ainda dependem muito do conhecimento e da experincia do especialista. Chego a dizer que um especialista realiza as sua tarefas sem a ferramenta CASE, j a ferramenta CASE no faz nada sem o especialista.

234

Banco de Dados II

2. Seria correto afirmar que o processo de compilao de um arquivo em Java est diretamente relacionada ao cdigo-fonte e a execuo diretamente relacionada ao arquivo resultado da compilao, chamado de .class? Resposta: Com certeza. Um programa em Java formado pelo cdigo fonte, que obedece as regras de sintaxe e semntica da linguagem, representados pela extenso .java. Quando da compilao de um programa em Java, atravs do comando Javac, que na verdade a execuo do arquivo javac.exe, existente na pasta Bin do diretrio em que est instalado o Java, o resultado se tudo estiver correto um arquivo com mesmo nome, porm com a extenso .class. Este arquivo .class que pode ser executado pela mquina virtual do Java, atravs do arquivo java.exe tambm localizado na pasta Bin da instalao do Java, representado de forma resumida como o comando java do prompt do Windows.

Unidade 6
1. Qual a vantagem em se apresentar na tela, atravs do mtodo getMessage(), o erro de uma Exception, como no exemplo a seguir? try{ //faz algo; }catch(Exception e){ System.out.println(O erro foi : + e.getMessage()); } Resposta: O tratamento de erro atravs do try-catch no Java uma ferramenta essencial e em muitos casos obrigatria. Diferente de algumas linguagens em que o tratamento de exceo uma opo do programador, no Java isto no existe. Sendo assim, cabe ao programador utilizar este recurso da melhor forma possvel. Atravs do mtodo getMessage() possvel apresentar ao usurio do sistema ume mensagem mais significativa, que possa indicar o problema , do que simplesmente uma mensagem do tipo, houve erro. Mesmo que a mensagem do mtodo getMessage() seja em ingls.

235

Universidade do Sul de Santa Catarina

2. Na definio de uma classe em Java, possvel atualizar o valor de um atributo diretamente, sem que se use o seu mtodo modificador. Esta forma de implementao pode ser considerada equivocada? Resposta: Veja o exemplo a seguir:

O uso dos mtodos modificadores no uma mera formalidade do Java. Apesar da linguagem aceitar que um atributo da classe receba um valor diretamente, sito deve ser evitado. O principal papel de um modificador alterar o valor de um atributo, e deve ser esta a nica forma de modificao utilizada. Alm disto, o modificador tem a funo de garantir a integridade dos dados, como por exemplo, evitar que idades negativas sejam cadastradas. Se o valor for alterado sem o uso do modificador, a regra de integridade estar desfeita. Veja o exemplo: public void setIdade(int _Idade){ if(_Idade >=0 ) Idade = _Idade; else Idade = 0; }

Unidade 7
1. Cite exemplos de metadados em banco de dados relacional. Resposta: So exemplos de metadados em um banco de dados relacional: nome do banco de dados, nomes das tabelas e seus atributos, relacionamentos (chaves primrias e estrangeiras) e tamanho das tabelas (nmero de linhas e colunas).

236

Banco de Dados II

2. De que forma a linguagem Java obtm informaes sobre os metadados de um SGDB? Resposta: Por meio do Driver JDBC. Esse pacote permite que o programador se conecte ao banco de dados e possa manipul-lo. Na verdade, trata-se de um alto nvel de abstrao, pois ao usar classes como DatabaseMetaData o usurio est interagindo diretamente com os metadados do SGDB usado, porm ele nem fica sabendo disto.

Unidade 8
1. Qual a finalidade em se criar uma rotina de verificao para valores cadastrados em colunas do tipo chave primria? Resposta: O cadastramento de valores repetidos em colunas do tipo chave primria geram um erro grave que pode encerrar o programa de forma inesperada. Problemas como esse podem gerar certa desconfiana do usurio com relao funcionalidade do sistema e das suas garantias de funcionamento. Alm disso, o sistema de banco de dados no permitir o cadastramento de dados repetidos em colunas com restrio de chave primria, sendo assim, no h necessidade de forar esse tipo de operao para que o Java gere um tratamento de exceo.

Unidade 9
1. O processo de implementao de um consulta em Java pode ser considerado um Gerador de Comandos? Resposta: Sim. Pois para fazer com que uma rotina em Java crie uma seleo a partir dos dados informados pelo usurio necessrio que o programador tenha um bom conhecimento sobre a sintaxe do comando SQL utilizado. A partir dos dados informados pelo usurio o sistema ter que criar o comando em SQL que represente fielmente a seleo desejada, e de forma transparente, pois o usurio no precisa saber como um comando em SQL funciona. Sendo assim, os dados informados pelo usurio precisam se transformar em um comando em SQL, de forma automtica, eficiente e correta, caso contrrio o sistema no funcionar.

237

You might also like