Você está na página 1de 238

Universidade do Sul de Santa Catarina

Palhoa
UnisulVirtual
2006
Banco de Dados II
Disciplina na modalidade a distncia
Banco_dadosII-fechado.indb 1 18/6/2007 13:59:14
Crditos
Unisul - Universidade do Sul de Santa Catarina
UnisulVirtual - Educao Superior a Distncia
Campus UnisulVirtual
Avenida dos Lagos, 41
Cidade Universitria Pedra Branca
Palhoa SC - 88137-100
Fone/fax: (48) 3279-1242 e
3279-1271
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
Chefe de Gabinete da Reitoria
Fabian Martins de Castro
Pr-Reitor Administrativo
Marcus Vincius Antoles da Silva
Ferreira
Campus Sul
Diretor: Valter Alves Schmitz Neto
Diretora adjunta: Alexandra
Orsoni
Campus Norte
Diretor: Ailton Nazareno Soares
Diretora adjunta: Cibele Schuelter
Campus UnisulVirtual
Diretor: Joo Vianney
Diretora adjunta: Jucimara
Roesler
Equipe UnisulVirtual
Administrao
Renato Andr Luz
Valmir Vencio Incio
Avaliao Institucional
Dnia Falco de Bittencourt
Biblioteca
Soraya Arruda Waltrick
Capacitao e Apoio
Pedaggico Tutoria
Angelita Maral Flores
(Coordenadora)
Caroline Batista
Enzo de Oliveira Moreira
Patrcia Meneghel
Vanessa Francine Corra
Coordenao dos Cursos
Adriano Srgio da Cunha
Alosio Jos Rodrigues
Ana Luisa Mlbert
Ana Paula Reusing Pacheco
Charles Cesconetto
Diva Marlia Flemming
Fabiano Ceretta
Itamar Pedro Bevilaqua
Janete Elza Felisbino
Jucimara Roesler
Lauro Jos Ballock
Lvia da Cruz (Auxiliar)
Luiz Guilherme Buchmann
Figueiredo
Luiz Otvio Botelho Lento
Marcelo Cavalcanti
Maria da Graa Poyer
Maria de Ftima Martins
(Auxiliar)
Mauro Faccioni Filho
Michelle D. Durieux Lopes Destri
Moacir Fogaa
Moacir Heerdt
Nlio Herzmann
Onei Tadeu Dutra
Patrcia Alberton
Raulino Jac Brning
Rodrigo Nunes Lunardelli
Simone Andra de Castilho
(Auxiliar)
Criao e Reconhecimento de
Cursos
Diane Dal Mago
Vanderlei Brasil
Desenho Educacional
Design Instrucional
Daniela Erani Monteiro Will
(Coordenadora)
Carmen Maria Cipriani Pandini
Carolina Hoeller da Silva Boeing
Flvia Lumi Matuzawa
Karla Leonora Dahse Nunes
Leandro Kingeski Pacheco
Ligia Maria Soufen Tumolo
Mrcia Loch
Viviane Bastos
Viviani Poyer
Acessibilidade
Vanessa de Andrade Manoel
Avaliao da Aprendizagem
Mrcia Loch (Coordenadora)
Cristina Klipp de Oliveira
Silvana Denise Guimares
Design Grco
Cristiano Neri Gonalves Ribeiro
(Coordenador)
Adriana Ferreira dos Santos
Alex Sandro Xavier
Evandro Guedes Machado
Fernando Roberto Dias
Zimmermann
Higor Ghisi Luciano
Pedro Paulo Alves Teixeira
Rafael Pessi
Vilson Martins Filho
Disciplinas a Distncia
Tade-Ane de Amorim
Ctia Melissa Rodrigues
Gerncia Acadmica
Patrcia Alberton
Gerncia de Ensino
Ana Paula Reusing Pacheco
Logstica de Encontros
Presenciais
Mrcia Luz de Oliveira
(Coordenadora)
Aracelli Araldi
Graciele Marins Lindenmayr
Letcia Cristina Barbosa
Knia Alexandra Costa Hermann
Priscila Santos Alves
Formatura e Eventos
Jackson Schuelter Wiggers
Logstica de Materiais
Jeferson Cassiano Almeida da
Costa (Coordenador)
Jos Carlos Teixeira
Eduardo Kraus
Monitoria e Suporte
Rafael da Cunha Lara
(coordenador)
Adriana Silveira
Andria Drewes
Caroline Mendona
Cristiano Dalazen
Dyego Rachadel
Edison Rodrigo Valim
Francielle Arruda
Gabriela Malinverni Barbieri
Jonatas Collao de Souza
Josiane Conceio Leal
Maria Eugnia Ferreira Celeghin
Rachel Lopes C. Pinto
Vincius Maykot Seram
Produo Industrial e Suporte
Arthur Emmanuel F. Silveira
(coordenador)
Francisco Asp
Relacionamento com o
Mercado
Walter Flix Cardoso Jnior
Secretaria de Ensino a
Distncia
Karine Augusta Zanoni
Albuquerque
(Secretria de ensino)
Ana Paula Pereira
Andra Luci Mandira
Carla Cristina Sbardella
Deise Marcelo Antunes
Djeime Sammer Bortolotti
Franciele da Silva Bruchado
Grasiela Martins
James Marcel Silva Ribeiro
Jennier Camargo
Lamuni Souza
Lauana de Lima Bezerra
Liana Pamplona
Marcelo Jos Soares
Marcos Alcides Medeiros Junior
Maria Isabel Aragon
Olavo Lajs
Priscilla Geovana Pagani
Rosngela Mara Siegel
Silvana Henrique Silva
Vanilda Liordina Heerdt
Vilmar Isaurino Vidal
Secretria Executiva
Viviane Schalata Martins
Tecnologia
Osmar de Oliveira Braz Jnior
(Coordenador)
Jeerson Amorin Oliveira
Ricardo Alexandre Bianchini
Banco_dadosII-fechado.indb 2 18/6/2007 13:59:34
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 Espao UnisulVirtual de Aprendizagem. Nossa
equipe ter o maior prazer em atend-lo, pois sua aprendizagem
nosso principal objetivo.
Bom estudo e sucesso!
Equipe UnisulVirtual.
Banco_dadosII-fechado.indb 3 18/6/2007 13:59:35
Banco_dadosII-fechado.indb 4 18/6/2007 13:59:35
Marcelo Medeiros
Palhoa
UnisulVirtual
2006
Banco de Dados II
Livro didtico
Design instrucional
Flavia Lumi Matuzawa
Banco_dadosII-fechado.indb 5 18/6/2007 13:59:35
Copyright UnisulVirtual 2006
Nenhuma parte desta publicao pode ser reproduzida por qualquer meio sem a prvia autorizao desta instituio.





Edio --- Livro Didtico

Professor Conteudista
Marcelo Medeiros

Design Instrucional
Flavia Lumi Matuzawa

ISBN 8560694-15-3
ISBN 978-85-60694-15-0

Projeto Grfico e Capa
Equipe UnisulVirtual

Diagramao
Rafael Pessi

Reviso Ortogrfica
B2B








005.75
M43 Medeiros, Marcelo
Banco de dados II : livro didtico / Marcelo Medeiros ; design
Instrucional Flavia Lumi Matuzawa, Viviane Bastos. Palhoa :
UnisulVirtual, 2006.
238 p. : il. ; 28 cm.

Inclui bibliografia.
ISBN 8560694-15-3
ISBN 978-85-60694-15-0

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
Apresentao . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 03
Palavras do professor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 09
Plano de estudo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
UNIDADE 1 Sistema computacional como soluo do problema . . . . . . . . . . . . 15
UNIDADE 2 Preparando o ambiente de banco de dados . . . . . . . . . . . . . . . . . . . . 43
UNIDADE 3 Ambiente de programao Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
UNIDADE 4 Linguagem de defnio de dados - DDL . . . . . . . . . . . . . . . . . . . . . . . 91
UNIDADE 5 Ambiente de desenvolvimento integrado . . . . . . . . . . . . . . . . . . . . . 107
UNIDADE 6 Comandos em Java para conexo com banco de dados . . . . . . . 127
UNIDADE 7 Comandos em Java para Apresentao dos Dados . . . . . . . . . . . . 157
UNIDADE 8 Criando a aplicao de cadastro de alunos . . . . . . . . . . . . . . . . . . . . 177
UNIDADE 9 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
Sumrio
Banco_dadosII-fechado.indb 7 18/6/2007 13:59:35
Banco_dadosII-fechado.indb 8 18/6/2007 13:59:35
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
Banco_dadosII-fechado.indb 9 18/6/2007 13:59:35
Banco_dadosII-fechado.indb 10 18/6/2007 13:59:36
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 Espao UnisulVirtual de Aprendizagem - EVA;
as atividades de avaliao (complementares, a distncia
e presenciais);
o Sistema Tutorial.
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.

Banco_dadosII-fechado.indb 11 18/6/2007 13:59:36


12
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 EVA, 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 EVA.
Use o quadro para agendar e programar as atividades
relativas ao desenvolvimento da Disciplina.

Banco_dadosII-fechado.indb 12 18/6/2007 13:59:36


13
Banco de Dados I
Atividades obrigatrias

Demais atividades (registro pessoal)
Banco_dadosII-fechado.indb 13 18/6/2007 13:59:36
Banco_dadosII-fechado.indb 14 18/6/2007 13:59:36
1
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.
Banco_dadosII-fechado.indb 15 18/6/2007 13:59:36
16
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.
Banco_dadosII-fechado.indb 16 18/6/2007 13:59:36
17
Banco de Dados II
Unidade 1
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 dia-
a-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!
Banco_dadosII-fechado.indb 17 18/6/2007 13:59:36
18
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;

Banco_dadosII-fechado.indb 18 18/6/2007 13:59:36


19
Banco de Dados II
Unidade 1
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 Projeto Fsico
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;
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 especifcado 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 confguraes e a instalao do sistema
implementado no cliente, como um produto fnal,
constando de manual do usurio e termos de garantia.

Banco_dadosII-fechado.indb 19 18/6/2007 13:59:36


20
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
LEVANTAMENTO
de requisitos
PROJETO
lgico
PROJETO
fsico
IMPLEMENTAO
IMPLANTAO
MANUTENO
SUCESSO
TESTES
INSUCESSO
Banco_dadosII-fechado.indb 20 18/6/2007 13:59:37
21
Banco de Dados II
Unidade 1
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 especifcao 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!
Banco_dadosII-fechado.indb 21 18/6/2007 13:59:37
22
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.

Banco_dadosII-fechado.indb 22 18/6/2007 13:59:37


23
Banco de Dados II
Unidade 1
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.

Banco_dadosII-fechado.indb 23 18/6/2007 13:59:37


24
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
Banco_dadosII-fechado.indb 24 18/6/2007 13:59:37
25
Banco de Dados II
Unidade 1
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 defne 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, evita-
se 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:
Banco_dadosII-fechado.indb 25 18/6/2007 13:59:37
26
Universidade do Sul de Santa Catarina
MATRICULA ALUNOS TURMAS
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:
MATRICULA ALUNOS TURMAS
1
N
N
1
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.

Banco_dadosII-fechado.indb 26 18/6/2007 13:59:37


27
Banco de Dados II
Unidade 1
Com base nos dados levantados, pode-se acrescentar mais uma
tabela ao modelo anterior, que a Tabela de Professores:
MATRICULA ALUNOS TURMAS
1
N
N
1
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:
MATRICULA ALUNOS TURMAS
1
N
N
1
PROFESSORES
N
N
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
Banco_dadosII-fechado.indb 27 18/6/2007 13:59:37
28
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:
MATRICULA ALUNOS TURMAS
1
N
N
1
N
M
A
T
R
I
C
U
L
A
PROFESSORES
N
1
1
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.
Banco_dadosII-fechado.indb 28 18/6/2007 13:59:38
29
Banco de Dados II
Unidade 1
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
Banco_dadosII-fechado.indb 29 18/6/2007 13:59:38
30
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.
Banco_dadosII-fechado.indb 30 18/6/2007 13:59:38
31
Banco de Dados II
Unidade 1
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
Banco_dadosII-fechado.indb 31 18/6/2007 13:59:38
32
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.
Banco_dadosII-fechado.indb 32 18/6/2007 13:59:38
33
Banco de Dados II
Unidade 1
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.

Banco_dadosII-fechado.indb 33 18/6/2007 13:59:38


34
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 int(11) NOT NULL,
Nome varchar(40) NOT NULL,
Data_Nascimento Date NOT NULL,
Idade int(4) NOT NULL,
CPF varchar(14),
RG_Identidade varchar(20),
Nome_Pai varchar(40) NOT NULL,
Nome_Mae varchar(40) NOT NULL,
Endereco varchar(50) NOT NULL,
Numero int(4) NOT NULL,
Cidade varchar(35) NOT NULL,
Estado char(2) NOT NULL,
Bairro varchar(40) NOT NULL,
Telefone varchar(30),
Celular varchar(30),
ChamarPor varchar(30),
Alergia varchar(30),
Grupo_Sangue varchar(10),
Doador int(4),
PRIMARY KEY ( Matricula )
);
Com base nesse script, a estrutura da tabela de alunos possui as
seguintes regras:
TABELA 1.9 - REGRAS DA TABELA DE ALUNOS
Banco_dadosII-fechado.indb 34 18/6/2007 13:59:38
35
Banco de Dados II
Unidade 1
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 int(4) NOT NULL,
Nome varchar(40) NOT NULL,
Data_Nascimento Date NOT NULL ,
Idade int(4) NOT NULL,
CPF varchar(14) NOT NULL ,
RG_Identidade varchar(20) NOT NULL,
CTPS varchar(20) NOT NULL,
Graduacao varchar(30) NOT NULL,
Estado_Civil varchar(25) NOT NULL,
Filhos int(4) NOT NULL,
Endereco varchar(50) NOT NULL ,
Numero int(4) NOT NULL,
Cidade varchar(35) NOT NULL,
Bairro varchar(30) NOT NULL ,
Estado char(2) NOT NULL,
Telefone varchar(25) NOT NULL,
Celular varchar(25),
Grupo_Sangue varchar(10),
Doador int(4),
PRIMARY KEY ( Codigo )
);
Com base neste script, a estrutura da Tabela de Professores possui
as seguintes regras:
TABELA 1.10 - REGRAS DA TABELA DE PROFESSORES
Banco_dadosII-fechado.indb 35 18/6/2007 13:59:38
36
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)
);
Banco_dadosII-fechado.indb 36 18/6/2007 13:59:38
37
Banco de Dados II
Unidade 1
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
Banco_dadosII-fechado.indb 37 18/6/2007 13:59:39
38
Universidade do Sul de Santa Catarina
#-- Criar a Tabela de Alunos
CREATE TABLE ALUNOS (
Matricula Int(11) NOT NULL,
Nome Varchar(40) NOT NULL,
Data_Nascimento Date NOT NULL,
Idade Int(4) NOT NULL,
CPF Varchar(14),
RG_Identidade Varchar(20),
Nome_Pai Varchar(40) NOT NULL,
Nome_Mae Varchar(40) NOT NULL,
Endereco Varchar(50) NOT NULL,
Numero Int(4) NOT NULL,
Cidade Varchar(35) NOT NULL,
Estado Char(2) NOT NULL,
Bairro Varchar(40) NOT NULL,
Telefone Varchar(30),
Celular Varchar(30),
Chamarpor Varchar(30),
Alergia Varchar(30),
Grupo_Sangue Varchar(10),
Doador Int(4),
PRIMARY KEY ( Matricula )
);
#-- Criar a Tabela de Professores
CREATE TABLE PROFESSORES (
Codigo Int(4) NOT NULL,
Nome Varchar(40) NOT NULL,
Data_Nascimento Date NOT NULL ,
Idade Int(4) NOT NULL,
CPF Varchar(14) NOT NULL ,
RG_Identidade Varchar(20) NOT NULL,
CTPS Varchar(20) NOT NULL,
Graduacao Varchar(30) NOT NULL,
Estado_Civil Varchar(25) NOT NULL,
Filhos Int(4) NOT NULL,
Endereco Varchar(50) NOT NULL ,
Numero Int(4) NOT NULL,
Cidade Varchar(35) NOT NULL,
Bairro Varchar(30) NOT NULL ,
Estado Char(2) NOT NULL,
Telefone Varchar(25) NOT NULL,
Celular Varchar(25),
Grupo_Sangue Varchar(10),
Doador Int(4),
PRIMARY KEY ( Codigo )
);
Banco_dadosII-fechado.indb 38 18/6/2007 13:59:39
39
Banco de Dados II
Unidade 1
#-- 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!
Banco_dadosII-fechado.indb 39 18/6/2007 13:59:39
40
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.
Banco_dadosII-fechado.indb 40 18/6/2007 13:59:39
41
Banco de Dados II
Unidade 1
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 profsses 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 profssional 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?
Banco_dadosII-fechado.indb 41 18/6/2007 13:59:39
42
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.

Banco_dadosII-fechado.indb 42 18/6/2007 13:59:39


2
UNIDADE 2
Preparando o ambiente
de banco de dados
Objetivos de aprendizagem
Aprender a instalar e confgurar 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.
Banco_dadosII-fechado.indb 43 18/6/2007 13:59:39
44
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.
Banco_dadosII-fechado.indb 44 18/6/2007 13:59:40
45
Banco de Dados II
Unidade 2
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.

Banco_dadosII-fechado.indb 45 18/6/2007 13:59:40


46
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.
Baixando o MySQL
Acesse o endereo de internet: <www.mysql.com>.
Com a pgina carregada, acesse o link: Developer
Zone. Este link especco para os desenvolvedores de
softwares com acesso a banco de dados;
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.
1.
2.
3.
A ferramenta pode ser acessada
em <www.mysql.com/>.
Banco_dadosII-fechado.indb 46 18/6/2007 13:59:40
47
Banco de Dados II
Unidade 2
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
Banco_dadosII-fechado.indb 47 18/6/2007 13:59:40
48
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.18-
win32 para iniciar a instalao. Na janela que se abrir
clique no boto Executar.
Banco_dadosII-fechado.indb 48 18/6/2007 13:59:40
49
Banco de Dados II
Unidade 2
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.
Banco_dadosII-fechado.indb 49 18/6/2007 13:59:40
50
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
Banco_dadosII-fechado.indb 50 18/6/2007 13:59:40
51
Banco de Dados II
Unidade 2
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
Banco_dadosII-fechado.indb 51 18/6/2007 13:59:40
52
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
Banco_dadosII-fechado.indb 52 18/6/2007 13:59:41
53
Banco de Dados II
Unidade 2
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
Banco_dadosII-fechado.indb 53 18/6/2007 13:59:41
54
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
Banco_dadosII-fechado.indb 54 18/6/2007 13:59:41
55
Banco de Dados II
Unidade 2
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
Banco_dadosII-fechado.indb 55 18/6/2007 13:59:41
56
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
Banco_dadosII-fechado.indb 56 18/6/2007 13:59:41
57
Banco de Dados II
Unidade 2
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
Banco_dadosII-fechado.indb 57 18/6/2007 13:59:41
58
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
Banco_dadosII-fechado.indb 58 18/6/2007 13:59:41
59
Banco de Dados II
Unidade 2
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.
Banco_dadosII-fechado.indb 59 18/6/2007 13:59:41
60
Universidade do Sul de Santa Catarina
Veja o organograma abaixo:
GRFICO 2.1 - SEQNCIA DE EXECUO DOS COMANDOS SQL NO MYSQL COMMAND LINE CLIENT
Comando SQL
Acrescentar ; no final
Pressionar a tecla ENTER
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.
Banco_dadosII-fechado.indb 60 18/6/2007 13:59:42
61
Banco de Dados II
Unidade 2
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.
Banco_dadosII-fechado.indb 61 18/6/2007 13:59:42
62
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.
Banco_dadosII-fechado.indb 62 18/6/2007 13:59:42
63
Banco de Dados II
Unidade 2
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
Banco_dadosII-fechado.indb 63 18/6/2007 13:59:42
64
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:
Usurio
Software
Database
(Banco de dados)
Tabelas
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;

Banco_dadosII-fechado.indb 64 18/6/2007 13:59:42
65
Banco de Dados II
Unidade 2
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.
Banco_dadosII-fechado.indb 65 18/6/2007 13:59:42
66
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.
Banco_dadosII-fechado.indb 66 18/6/2007 13:59:42
67
Banco de Dados II
Unidade 2
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 Int(11) NOT NULL,
Nome Varchar(40) NOT NULL,
Data_Nascimento Date NOT NULL,
Idade Int(4) NOT NULL,
CPF Varchar(14),
RG_Identidade Varchar(20),
Nome_Pai Varchar(40) NOT NULL,
Nome_Mae Varchar(40) NOT NULL,
Endereco Varchar(50) NOT NULL,
Numero Int(4) NOT NULL,
Cidade Varchar(35) NOT NULL,
Estado Char(2) NOT NULL,
Bairro Varchar(40) NOT NULL,
Telefone Varchar(30),
Celular Varchar(30),
Chamarpor Varchar(30),
Alergia Varchar(30),
Grupo_Sangue Varchar(10),
Doador Int(4),
PRIMARY KEY ( Matricula )
);
#-- Criar a Tabela de Professores
CREATE TABLE PROFESSORES (
Codigo Int(4) NOT NULL,
Nome Varchar(40) NOT NULL,
Data_Nascimento Date NOT NULL ,
SEGUE
Banco_dadosII-fechado.indb 67 18/6/2007 13:59:42
68
Universidade do Sul de Santa Catarina
Idade Int(4) NOT NULL,
CPF Varchar(14) NOT NULL ,
RG_Identidade Varchar(20) NOT NULL,
CTPS Varchar(20) NOT NULL,
Graduacao Varchar(30) NOT NULL,
Estado_Civil Varchar(25) NOT NULL,
Filhos Int(4) NOT NULL,
Endereco Varchar(50) NOT NULL ,
Numero Int(4) NOT NULL,
Cidade Varchar(35) NOT NULL,
Bairro Varchar(30) NOT NULL ,
Estado Char(2) NOT NULL,
Telefone Varchar(25) NOT NULL,
Celular Varchar(25),
Grupo_Sangue Varchar(10),
Doador Int(4),
PRIMARY KEY ( Codigo )
);
#-- 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)
);
Banco_dadosII-fechado.indb 68 18/6/2007 13:59:43
69
Banco de Dados II
Unidade 2
#-- 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.
Banco_dadosII-fechado.indb 69 18/6/2007 13:59:43
70
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
Banco_dadosII-fechado.indb 70 18/6/2007 13:59:43
71
Banco de Dados II
Unidade 2
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
Banco_dadosII-fechado.indb 71 18/6/2007 13:59:43
72
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
Banco_dadosII-fechado.indb 72 18/6/2007 13:59:43
73
Banco de Dados II
Unidade 2
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.

Banco_dadosII-fechado.indb 73 18/6/2007 13:59:43


74
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 profssionais 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 felmente o banco de dados utilizado. Essa
afrmao est correta? Justifque 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 especifcado 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?
Banco_dadosII-fechado.indb 74 18/6/2007 13:59:43
75
Banco de Dados II
Unidade 2
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

Banco_dadosII-fechado.indb 75 18/6/2007 13:59:43


Banco_dadosII-fechado.indb 76 18/6/2007 13:59:44
3
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 confgurar o ambiente de


programao Java.
Sees de estudo
Seo 1 Apresentando o Java.
Seo 2 Instalando o Java.
Banco_dadosII-fechado.indb 77 18/6/2007 13:59:44
78
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.

Banco_dadosII-fechado.indb 78 18/6/2007 13:59:44
79
Banco de Dados II
Unidade 3
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, signifca a escrita de uma
palavra e a semntica o signifcado 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.

Banco_dadosII-fechado.indb 79 18/6/2007 13:59:44


80
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.
Banco_dadosII-fechado.indb 80 18/6/2007 13:59:44
81
Banco de Dados II
Unidade 3
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
Cdigo-fonte (.java)
Arquivo binrio (.class)
Mquina virtual Java
(JVM)
Computador
INTERPRETADOR
EMULADOR
COMPILADOR 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.
Banco_dadosII-fechado.indb 81 18/6/2007 13:59:44
82
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
Banco_dadosII-fechado.indb 82 18/6/2007 13:59:44
83
Banco de Dados II
Unidade 3
Na nova pgina que carregou, marque o item Required como
Accept e depois clique na opo Windows OLine 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.
Banco_dadosII-fechado.indb 83 18/6/2007 13:59:44
84
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 confgurar as variveis de ambiente?
O processo simples. Primeiro voc precisa chegar ao formulrio
de congurao das variveis de ambiente para depois adicion-
las 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:
Banco_dadosII-fechado.indb 84 18/6/2007 13:59:44
85
Banco de Dados II
Unidade 3
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 confgurar as variveis
de ambiente.
Banco_dadosII-fechado.indb 85 18/6/2007 13:59:45
86
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
Banco_dadosII-fechado.indb 86 18/6/2007 13:59:45
87
Banco de Dados II
Unidade 3
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.
Banco_dadosII-fechado.indb 87 18/6/2007 13:59:45
88
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

Banco_dadosII-fechado.indb 88 18/6/2007 13:59:45


89
Banco de Dados II
Unidade 3
O comando Javac faz a compilao de um programa
em Java. Quando o comando pode ser executado, isto
signifca que todas as confguraes 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 confgurado, 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.
Banco_dadosII-fechado.indb 89 18/6/2007 13:59:45
90
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 profssional 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 afrmao est correta? Qual a sua opinio?
Banco_dadosII-fechado.indb 90 18/6/2007 13:59:45
91
Banco de Dados II
Unidade 3
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.

Banco_dadosII-fechado.indb 91 18/6/2007 13:59:45


Banco_dadosII-fechado.indb 92 18/6/2007 13:59:45
4
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 confgurar 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.
Banco_dadosII-fechado.indb 93 18/6/2007 13:59:45
94
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.
Banco_dadosII-fechado.indb 94 18/6/2007 13:59:46
95
Banco de Dados II
Unidade 4
Veja a imagem a seguir:
DRIVER
SOFTWARE BANCO DE DADOS
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/mysql-
connector-odbc-3.51.12-win32.zip/from/http://www.linorg.usp.
br/mysql/>
Banco_dadosII-fechado.indb 95 18/6/2007 13:59:46
96
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:
Banco_dadosII-fechado.indb 96 18/6/2007 13:59:46
97
Banco de Dados II
Unidade 4
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.
Banco_dadosII-fechado.indb 97 18/6/2007 13:59:46
98
Universidade do Sul de Santa Catarina
JDBC
PROGRAMA
em Java
BANCO DE DADOS
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.
Banco_dadosII-fechado.indb 98 18/6/2007 13:59:46
99
Banco de Dados II
Unidade 4
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.
Banco_dadosII-fechado.indb 99 18/6/2007 13:59:46
100
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 Situao Finalidade
MySQL
Instalado e congurado, com a
senha de acesso virtual.
Armazenamento dos dados da
aplicao para escola SabeTudo.
Java
Instalado e com as variveis de
ambiente CLASSPATH e PATH
conguradas.
Implementar a aplicao para escola
SabeTudo.
JODBC MySQL
Copiado para um diretrio do
computador.
Conectar o banco de dados MySQL ao
aplicativo implementado em JAVA.
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.

Banco_dadosII-fechado.indb 100 18/6/2007 13:59:46


101
Banco de Dados II
Unidade 4
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:
Banco_dadosII-fechado.indb 101 18/6/2007 13:59:47
102
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:
Banco_dadosII-fechado.indb 102 18/6/2007 13:59:47
103
Banco de Dados II
Unidade 4
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.
Banco_dadosII-fechado.indb 103 18/6/2007 13:59:47
104
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.
Banco_dadosII-fechado.indb 104 18/6/2007 13:59:47
105
Banco de Dados II
Unidade 4
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
afrmar 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 afrmativa correta? Justifque sua resposta.
2. O uso das fontes de dados uma forma de abstrao para o
programador?
Banco_dadosII-fechado.indb 105 18/6/2007 13:59:47
106
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.

Banco_dadosII-fechado.indb 106 18/6/2007 13:59:47


5
UNIDADE 5
Ambiente de desenvolvimento
integrado
Objetivos de aprendizagem

Compreender o que um Ambiente de


Desenvolvimento Integrado.

Instalar e confgurar 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.
Banco_dadosII-fechado.indb 107 18/6/2007 13:59:47
108
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.
Banco_dadosII-fechado.indb 108 18/6/2007 13:59:47
109
Banco de Dados II
Unidade 5
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.
Banco_dadosII-fechado.indb 109 18/6/2007 13:59:48
110
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.
Banco_dadosII-fechado.indb 110 18/6/2007 13:59:48
111
Banco de Dados II
Unidade 5
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
Banco_dadosII-fechado.indb 111 18/6/2007 13:59:48
112
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.
Banco_dadosII-fechado.indb 112 18/6/2007 13:59:48
113
Banco de Dados II
Unidade 5
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.
Banco_dadosII-fechado.indb 113 18/6/2007 13:59:48
114
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
Banco_dadosII-fechado.indb 114 18/6/2007 13:59:48
115
Banco de Dados II
Unidade 5
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:
Na tela 1 - clique no boto Next;
Na tela 2 - selecione a opo I accept de igreement e
clique no boto Next;
Na tela 3 - clique no boto Next;
Na tela 4 - clique no boto Next;
Na tela 5 - clique no boto Next;
Na tela 6 clique no boto Install;
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.
1.
2.
3.
4.
5.
6.
7.
Banco_dadosII-fechado.indb 115 18/6/2007 13:59:48
116
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
Banco_dadosII-fechado.indb 116 18/6/2007 13:59:48
117
Banco de Dados II
Unidade 5
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.
Banco_dadosII-fechado.indb 117 18/6/2007 13:59:49
118
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 abri-
lo, 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.
Banco_dadosII-fechado.indb 118 18/6/2007 13:59:49
119
Banco de Dados II
Unidade 5
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.
Banco_dadosII-fechado.indb 119 18/6/2007 13:59:49
120
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
Banco_dadosII-fechado.indb 120 18/6/2007 13:59:49
121
Banco de Dados II
Unidade 5
Para editar o programa de teste, na rea de edio do Cdigo-
Fonte 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
Banco_dadosII-fechado.indb 121 18/6/2007 13:59:49
122
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!
Banco_dadosII-fechado.indb 122 18/6/2007 13:59:49
123
Banco de Dados II
Unidade 5
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.
Banco_dadosII-fechado.indb 123 18/6/2007 13:59:49
124
Universidade do Sul de Santa Catarina
Atividades de auto-avaliao
1. O uso de ferramentas que auxiliam o profssional 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 afrmar 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?
Banco_dadosII-fechado.indb 124 18/6/2007 13:59:49
125
Banco de Dados II
Unidade 5
Saiba mais
<http://portaljava.com>
<http://jcreator.com>
<http://www.guj.com.br>
<http://www.eclipse.org/>
<http://www.netbeans.org/>
Banco_dadosII-fechado.indb 125 18/6/2007 13:59:49
Banco_dadosII-fechado.indb 126 18/6/2007 13:59:49
6
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.
Banco_dadosII-fechado.indb 127 18/6/2007 13:59:49
128
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.
Banco_dadosII-fechado.indb 128 18/6/2007 13:59:50
129
Banco de Dados II
Unidade 6
Mas o que cada uma dessas etapas?
Para responder essa pergunta veja a tabela a seguir.
Quadro 6.1 - ETAPAS DA PRAGRAMAO
Etapa Funo
Analisar Converter a soluo em um algoritmo.
Codicar Escrever a soluo lgica por meio de uma linguagem de programao.
Compilar
Vericar se o cdigo fonte atende as regras de semntica e sintaxe da
linguagem utilizada.
Depurar
Corrigir os erros de sintaxe e semntica apresentados pelo processo de
compilao.
Executar Fazer o programa rodar.
Por meio de um diagrama, o processo pode ser representado da
seguinte forma:
Grfco 6.1 - ETAPAS DO PROCESSO DE PROGRAMAO
Codificao
Compilao
Erros de
sintaxe / semntica
Executar
NO
SIM
Depurar
Banco_dadosII-fechado.indb 129 18/6/2007 13:59:50
130
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;}
Banco_dadosII-fechado.indb 130 18/6/2007 13:59:50
131
Banco de Dados II
Unidade 6

//-- 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.
Banco_dadosII-fechado.indb 131 18/6/2007 13:59:50
132
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);
}
}
Banco_dadosII-fechado.indb 132 18/6/2007 13:59:50
133
Banco de Dados II
Unidade 6
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.
Banco_dadosII-fechado.indb 133 18/6/2007 13:59:50
134
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
import javax.swing.*
A importao dessa classe se faz necessria para o uso
dos comandos JOptionPane.showInputDialog e
JOptionPane.showMessageDialog.
class caneta
A denio do nome da classe deve ser o mesmo
nome do arquivo .java.
public caneta
O mtodo construtor deve ter o mesmo nome da
classe e deve ser pblico.
private Os atributos devem ser privados.
public void
Os mtodos modicadores, alm de pblicos, no
retornam valor algum.
Alm disso, sempre recebe um valor como parmetro.
public String
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.
Float.parseFloat
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.
\n Caractere especial para pulo de linha.
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.
Banco_dadosII-fechado.indb 134 18/6/2007 13:59:50
135
Banco de Dados II
Unidade 6
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:
Grfco 6.2 - FORMA DE ACESSO AO UM SOFTWARE COM CONEXO AO
BANCO DE DADOS
Conectar ao
Banco de Dados
Usurio tem acesso
Conectou?
Comandos de
manipulao de dados
NO
SIM
Mensagem
de ERRO
Encerra o
programa
Banco de dados

Banco_dadosII-fechado.indb 135 18/6/2007 13:59:51


136
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 cdigo-
fonte 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().

Banco_dadosII-fechado.indb 136 18/6/2007 13:59:51


137
Banco de Dados II
Unidade 6
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

Banco_dadosII-fechado.indb 137 18/6/2007 13:59:51


138
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()));
}
Banco_dadosII-fechado.indb 138 18/6/2007 13:59:51
139
Banco de Dados II
Unidade 6
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?
Banco_dadosII-fechado.indb 139 18/6/2007 13:59:51
140
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
import javax.swing.*;
Pacote em Java para os comandos derivados de
JOptionPane.
Como: JOptionPane.showInputDialog e JOptionPane.
showMessageDialog.
import java.sql.*; Pacote Java para manipulao de banco de dados.
class ConexaoDB
Nome da classe criada deve ter o mesmo nome do arquivo
em Java.
private String FonteDB,Usuario,Senha;
private Connection Conexao;
Atributos da classe so sempre private.
public ConexaoDB(String_FonteDB,String
_Usuario,String,_Senha)
Construtor da classe ConexaoDB, recebendo como parmetro os
valores da Fonte de Dados, usurio e senha.
String fonte = jdbc:odbc:+getFonte();
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.
Class.forName(sun.jdbc.odbc.
JdbcOdbcDriver);
Carrega o driver que ser usado para conexo com o Java.
Nesse caso, ser uma conexo via ODBC.
DriverManager.getConnection(fonte,getUs
uario(),getSenha()));
Tenta fazer a conexo com o banco de dados a partir da
fonte de dados, usurio e senha fornecidos.
setConexao(DriverManager.getConnection
(fonte,getUsuario(),getSenha()));
O mtodo setConexao() armazena no atributo Conexo o
resultado da execuo do comando getConnection.
try{
}
catch(Exception e){
}
Toda a operao de banco de dados em Java,
obrigatoriamente deve ser protegida com tratamento de
exceo try.. catch.
getConexao().close();
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.
return getConexao().createStatement();
O tipo de dado Statement representa as operaes que
podem ser executadas pelo banco de dados.
Sendo assim, o mtodo PrepararComando mantm o
banco de dados em modo de espera, aguardando que algum
comando em SQL seja passado para execuo.
Banco_dadosII-fechado.indb 140 18/6/2007 13:59:51
141
Banco de Dados II
Unidade 6
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 salve-
o na pasta c:\DB2\Fontes.
Banco_dadosII-fechado.indb 141 18/6/2007 13:59:51
142
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.
Banco_dadosII-fechado.indb 142 18/6/2007 13:59:52
143
Banco de Dados II
Unidade 6
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;
Banco_dadosII-fechado.indb 143 18/6/2007 13:59:52
144
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);
Banco_dadosII-fechado.indb 144 18/6/2007 13:59:52
145
Banco de Dados II
Unidade 6
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);
}

SEGUE
Importe dos pacotes para JOptionPane
(swing) e DriveManager,executeUpdate e
executeQuery (java.sql).
Atributos privados da classe. Note que o
atributo Con faz uma composio classe
ConexaoDB, implementada anteriormente.
Construtor da classe. Deve ter o
mesmo nome da classe.
Banco_dadosII-fechado.indb 145 18/6/2007 13:59:52
146
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;}

//-- 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.);
}
}
}
Compile a classe mostrada anteriormente e caso seja encontrado
algum erro de sintaxe, compare o seu cdigo com o cdigo-
fonte acima. Com essa classe implementada, voc j pode passar
qualquer comando em SQL para o banco de dados.
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.
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.
Banco_dadosII-fechado.indb 146 18/6/2007 13:59:52
147
Banco de Dados II
Unidade 6
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.
Banco_dadosII-fechado.indb 147 18/6/2007 13:59:52
148
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 2 3 4
Ttulos Matrcula Descrio Grau Srie Turno
Valores
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]+:);
Banco_dadosII-fechado.indb 148 18/6/2007 13:59:52
149
Banco de Dados II
Unidade 6
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 Descrio Grau Srie Turno
1 Sexta Serie B 1 6 M
Dessa forma, a estrutura usada pela classe car assim:
0 1 2 3 4
Ttulos Matrcula Descrio Grau Srie Turno
Valores 1
Sexta
srie B
1 6 M
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 (.
Banco_dadosII-fechado.indb 149 18/6/2007 13:59:53
150
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

Banco_dadosII-fechado.indb 150 18/6/2007 13:59:53


151
Banco de Dados II
Unidade 6
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 usarComan-
dos, 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.

Banco_dadosII-fechado.indb 151 18/6/2007 13:59:53


152
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.
Banco_dadosII-fechado.indb 152 18/6/2007 13:59:53
153
Banco de Dados II
Unidade 6
Sntese
Nesta unidade voc pde revisar alguns conceitos da programa-
o 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.
Banco_dadosII-fechado.indb 153 18/6/2007 13:59:53
154
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());
}
Banco_dadosII-fechado.indb 154 18/6/2007 13:59:53
155
Banco de Dados II
Unidade 6
2. Na defnio de uma classe em Java, possvel atualizar o valor de um
atributo diretamente, sem que se use o seu mtodo modifcador. 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 2-
Teorias 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>

Banco_dadosII-fechado.indb 155 18/6/2007 13:59:53


Banco_dadosII-fechado.indb 156 18/6/2007 13:59:53
7
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.
Banco_dadosII-fechado.indb 157 18/6/2007 13:59:53
158
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.

Banco_dadosII-fechado.indb 158 18/6/2007 13:59:54


159
Banco de Dados II
Unidade 7
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.
Banco_dadosII-fechado.indb 159 18/6/2007 13:59:54
160
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.
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.
O ResultSet a classe responsvel
por manipular os dados obtidos da
execuo de uma query (pesquisa
pelo uso de um Select) .
Banco_dadosII-fechado.indb 160 18/6/2007 13:59:54
161
Banco de Dados II
Unidade 7
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, salvando-
o 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.

Banco_dadosII-fechado.indb 161 18/6/2007 13:59:54


162
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.);
Banco_dadosII-fechado.indb 162 18/6/2007 13:59:54
163
Banco de Dados II
Unidade 7

}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
Banco_dadosII-fechado.indb 163 18/6/2007 13:59:54
164
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
Banco_dadosII-fechado.indb 164 18/6/2007 13:59:54
165
Banco de Dados II
Unidade 7
Veja a seguir o que faz cada uma dos mtodos da classe
Exemplos.
Quadro 7.2 - MTODOS DA CLASSE EXEMPLOS
Mtodo Objetivo
public static String Turno(String
_Turno)
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.
public static void Conectar()
Este mtodo responsvel pela conexo ao Banco de Dados
MYSQL, no database SabeTudo, pela fonte de dados
AcessoDB.
public static void Desconectar()
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.
public static void Selecionar(String
Comando)
Esse mtodo prepara o banco de dados para execuo de um
comando SQL, pela classe do tipo Statement.
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.
public static void Listar()
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 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.
public static void ListarTodos()
Esse mtodo lista todos os registros resultantes do comando de
seleo.
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
Banco_dadosII-fechado.indb 165 18/6/2007 13:59:55
166
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.
public static void Menu()
Esse mtodo desenha um Menu na tela, sendo que cada opo do menu
faz uma chamada aos mtodos apresentados acima.
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.
Banco_dadosII-fechado.indb 166 18/6/2007 13:59:55
167
Banco de Dados II
Unidade 7
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.

Banco_dadosII-fechado.indb 167 18/6/2007 13:59:55


168
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());
}
}
}

Banco_dadosII-fechado.indb 168 18/6/2007 13:59:55


169
Banco de Dados II
Unidade 7
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
Banco_dadosII-fechado.indb 169 18/6/2007 13:59:55
170
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
Banco_dadosII-fechado.indb 170 18/6/2007 13:59:55
171
Banco de Dados II
Unidade 7
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.
Banco_dadosII-fechado.indb 171 18/6/2007 13:59:55
172
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());
}
}
}
Banco_dadosII-fechado.indb 172 18/6/2007 13:59:55
173
Banco de Dados II
Unidade 7
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.

PreparedStatement st=con.prepareStatement(SELECT * +
FROM turmas +
WHERE Codigo_Turma = ?);
st.setString(1,3);
Select * from Turmas
where Codigo_Turma = 3

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
Banco_dadosII-fechado.indb 173 18/6/2007 13:59:56
174
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.
Banco_dadosII-fechado.indb 174 18/6/2007 13:59:56
175
Banco de Dados II
Unidade 7
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.
Banco_dadosII-fechado.indb 175 18/6/2007 13:59:56
176
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.

Banco_dadosII-fechado.indb 176 18/6/2007 13:59:56


8
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 Verifcando 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 Excluindo os dados da Tabela de Alunos.
Seo 8 Alterando os dados da Tabela de Alunos.
Banco_dadosII-fechado.indb 177 18/6/2007 13:59:56
178
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 (*);

Banco_dadosII-fechado.indb 178 18/6/2007 13:59:56


179
Banco de Dados II
Unidade 8
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.

Banco_dadosII-fechado.indb 179 18/6/2007 13:59:56


180
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;
}

Banco_dadosII-fechado.indb 180 18/6/2007 13:59:57


181
Banco de Dados II
Unidade 8
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 pr-
denido, 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.
Banco_dadosII-fechado.indb 181 18/6/2007 13:59:57
182
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 Nome de Apresentao
Matricula Matrcula *
Nome Nome *
Data_Nascimento Data de Nascimento *
Idade Idade *
CPF CPF
RG_Identidade RG
Nome_Pai Nome do pai *
Nome_Me Nome da Me *
Endereco Endereo *
Numero Nmero *
Cidade Cidade *
Estado Estado *
Bairro Bairro *
Telefone Telefone
Celular Celular
ChamarPor Responsvel
Alergia Alrgico
GrupoSangue Grupo Sanguneo
Doador 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
Banco_dadosII-fechado.indb 182 18/6/2007 13:59:57
183
Banco de Dados II
Unidade 8
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();

Banco_dadosII-fechado.indb 183 18/6/2007 13:59:57


184
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().
Banco_dadosII-fechado.indb 184 18/6/2007 13:59:57
185
Banco de Dados II
Unidade 8
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 public Alunos(){
2 Comando = new ComandosSQL();
3 Comando.AbrirConexao(AcessoDB,root,virtual);
4 if (!Comando.getConectou()){
5 JOptionPane.showMessageDialog(
6 null,Erro de Conexo com Banco de Dados\n +
7 Entre em contato com Suporte ! \n +
8 A aplicao ser FECHADA ! );
9 System.exit(0);
10 }
11 else{
12 try{
13 Comando.ExecutarComando(select * from alunos);
14 ResultSet res = Comando.getResultadoSQL();
15 GerarNomesColunas(res);
16 }catch(Exception e){
17 System.out.println(Erro Gerando Nome das Colunas);
18 }
19 }
20 }
Vou apresentar a voc qual a nalidade das principais linhas de
comando do cdigo-fonte acima.
Banco_dadosII-fechado.indb 185 18/6/2007 13:59:57
186
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.
Banco_dadosII-fechado.indb 186 18/6/2007 13:59:57
187
Banco de Dados II
Unidade 8
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 public void GerarNomesColunas(ResultSet rs){
2 try{
3 Rsmd = rs.getMetaData();
4 for (int i = 1; i <= Rsmd.getColumnCount(); i++)
5 NomesColunas[i-1] = Rsmd.getColumnName(i);
6 }catch(Exception e){
7 System.out.println(Erro Gerando Nome das Colunas);
8 }
9 }

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.
Banco_dadosII-fechado.indb 187 18/6/2007 13:59:57
188
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 public boolean MatriculaExiste(String Mat){
2 try{
3 Comando.ExecutarComando(
4 select * from alunos where Matricula = + Mat);
5 ResultSet rs = Comando.getResultadoSQL();
6 return (rs.next());
7 }catch(Exception e){
8 System.out.println(Erro Pesquisando Matricula.);
9 return true;
10 }
11 }
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.
Banco_dadosII-fechado.indb 188 18/6/2007 13:59:58
189
Banco de Dados II
Unidade 8
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 public String FormatoCampo(int Pos,String Valor){
2 String Saida=Valor;
3 try{
4 switch(Rsmd.getColumnType(Pos)) {
5 case Types.VARCHAR: Saida = + Valor +;break;
6 case Types.DATE: Saida = +Valor +;break;
7 case Types.INTEGER: Saida = Valor;break;
8 case Types.CHAR: Saida = +Valor+;break;
9 case Types.FLOAT: Saida = Valor;break;
10 }
11 return Saida;
12 }catch(Exception e) {
13 return Saida;
14 }
15 }
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.
Banco_dadosII-fechado.indb 189 18/6/2007 13:59:58
190
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);.
Banco_dadosII-fechado.indb 190 18/6/2007 13:59:58
191
Banco de Dados II
Unidade 8
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 public void CadastrarDados(){
2 int i=0,itens=0,j=0;
3 String Escolha = S;
4
String Mensagem = Conrma o Cadastro dos Seguintes Dados: \n;

5 String Colunas=,Dados=,Operacao=;
6 String ValorLido=;
7 JOptionPane.showMessageDialog(null, Cadastro de ALUNOS \n+
8 Os campos com * so Obrigatrios!);
9 String Valores[] = new String[19];
10
11 while (i < 19){
12 Valores[i] = JOptionPane.showInputDialog(null,Campos[i]);
13 ValorLido = Valores[i];
14 do{
15 if (i == 0 && MatriculaExiste(ValorLido)){
16 JOptionPane.showMessageDialog(null,Este Nmero de Matrcula j foi usado!\n+
17 Informe um novo cdigo para Matrcula);
18
19 ValorLido = JOptionPane.showInputDialog(null,Campos[i]);
20 Valores[i] = ValorLido;
21 }

SEGUE
Banco_dadosII-fechado.indb 191 18/6/2007 13:59:58
192
Universidade do Sul de Santa Catarina
22 }while(i==0 && MatriculaExiste(ValorLido));
23


24 if( Valores[i].equals() && (Campos[i].indexOf(*) != -1)){
25 JOptionPane.showMessageDialog(null, Este campo obrigatrio \n+
26 Por Favor, recadastre-o!);
27 }
28 else{
29 i++;
30 }
31 if (!ValorLido.equals())
32 itens++;
33 }
34 if (!Valores[18].equals()){
35 if (Valores[18].charAt(0) == S || Valores[18].charAt(0) == s)
36 Valores[18] = 1; //Sim
37 else
38 Valores[18] = 0; //No
39 }
40 j=0;
41 for(i=0;i<19;i++){
42 if (!Valores[i].equals()){
43 Mensagem = Mensagem + Campos[i] + : + Valores[i]+\n;
44 Colunas=Colunas+NomesColunas[i];
45 Dados =Dados +FormatoCampo(i+1,Valores[i]);
46 if (j < itens-1){
47 Colunas=Colunas + ,;
48 Dados = Dados + ,;
49
50
}
51 j++;
52 }
53 }
54 Escolha = JOptionPane.showInputDialog(Mensagem + \n Sim(S) - No(N));
55 if (Escolha.equalsIgnoreCase(S)){
56 Operacao = insert into alunos(+Colunas+) values (+Dados+);
57 try{
58 Comando.ExecutarComando(Operacao);
59 }catch(Exception e){
60 System.out.println(e.getMessage());
61 }
62 }
63
64 }
Banco_dadosII-fechado.indb 192 18/6/2007 13:59:58
193
Banco de Dados II
Unidade 8
Abaixo um comentrio sobre as principais operaes realizadas
pelo mtodo de cadastro de alunos.
1 Nome do mtodo.
2
Atributos para obteno do nome dos campos, total de campos cadastrados e obteno do
nome fsico das colunas.
3 Atributo para conrmao ou no do cadastro.
4 Atributo que apresentar os dados informados pelo usurio.
5
Atributo para armazenamento dos nomes das colunas, do valor de insero de cada coluna
e armazenamento do comando Insert gerado.
6 Atributo para armazenamento do valor informado pelo usurio.
7 Um aviso para o usurio de que os campos com * so obrigatrios.
9 Atributo para armazenamento de todos os valores informados pelo usurio do sistema.
11 Realiza um lao para a solicitao do valor de cadastro para todos os campos da tabela.
12 Solicita o valor do campo.
14 Repete o cadastro da matrcula at que seja informado um cdigo que ainda no foi usado.
15 Verica se o valor informado o da matrcula e se a mesma j foi cadastrada.
24 Verica se o campo cadastrado um campo obrigatrio, ou seja, possui um asterisco (*).
31
Verica se o valor do campo cadastrado diferente de vazio. Incrementa o contador de
campos cadastrados.
34
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.
41 Verica os valores cadastrados para todos os campos.
42 Se o valor no for vazio.
43 Monta a mensagem com o nome do campo e o valor cadastrado.
44 Monta o atributo Colunas com os nomes fsicos dos campos preenchidos;
45
Monta o atributo Dados com os valores informados para cada campo, vericando se o valor
deve ou no car entre aspas.
46
Se no for o ltimo campo cadastrado, acrescenta uma vrgula para separar cada nome de
coluna e cada valor informado pelo usurio.
54 Apresenta os valores cadastrados pelo usurio e solicita a conrmao do cadastro.
55 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.
Banco_dadosII-fechado.indb 193 18/6/2007 13:59:58
194
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 public void ExcluirPorMatricula(){
2 String Escolha = S;
3 String Saida = ;
4 String Mat = JOptionPane.showInputDialog(Informe a Matrcula para Excluso:);
5 try{
6 Comando.ExecutarComando(select * from alunos where Matricula = + Mat);
7 ResultSet rs = Comando.getResultadoSQL();
8 while(rs.next())
9 {
10 Saida = Matrcula: + rs.getString(Matricula)+\n+
11 Nome : + rs.getString(Nome);
12 }
13 if (Saida.equals()){
14 JOptionPane.showMessageDialog(null,Matrcula Inexistente!);
15 }
16 else{
17 JOptionPane.showInputDialog(Conrma a excluso do Aluno:\n+
18 Saida+\n+
19 Sim(S) - No(N));
20 if (Escolha.equalsIgnoreCase(S))
21 Comando.ExecutarComando(
22 Delete from alunos where Matricula = + Mat);
23 }
24 }catch(Exception e){
25 System.out.println(Excluso no pode ser feita!+e.getMessage());
26 }
27 }
Para saber como funciona essa implementao, veja a descrio a
seguir:
2 Conrma a excluso.
3 Atributo para apresentao do nome e da matrcula do aluno selecionado.
4 Solicita a matrcula do aluno a ser excludo.
6 Seleciona os alunos com a matrcula informada.
7 Armazena o resultado do Select.
8 Varre todos os registros retornados pelo Select.
11 Armazena o nome e a matrcula do aluno localizado pelo Select.
13 Se o atributo Sada estiver vazio, porque nenhum aluno foi localizado.
16
Se o atributo Sada diferente de vazio, ento apresenta na tela o nome e a matrcula do
aluno e solicita a conrmao da excluso.
20 Se a escolha for Sim, exclui os alunos com a matrcula informada.
Banco_dadosII-fechado.indb 194 18/6/2007 13:59:59
195
Banco de Dados II
Unidade 8
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 public void AlterarPorMatricula(){
2 int i;
3 String Valores[] = new String[19];
4 String Saida = ;
5 String Escolha = S;
6 String ValorLido = ;
7 String Colunas = ;
8 String Dados = ;
9 String Operacao = ;
10 String Mat = JOptionPane.showInputDialog(
11 Informe a Matrcula para Alterao:);
12 try{
13 Comando.ExecutarComando(
14 select * from alunos where Matricula = + Mat);
15 ResultSet rs = Comando.getResultadoSQL();
16 if (rs.next()){
17 Rsmd = rs.getMetaData();
18 for (i=1;i <= Rsmd.getColumnCount();i++){
19 Valores[i-1] = rs.getString(Rsmd.getColumnName(i));
SEGUE
Banco_dadosII-fechado.indb 195 18/6/2007 13:59:59
196
Universidade do Sul de Santa Catarina
20 if (i == 19){
21 if(Valores[i-1].equals(1))
22 Valores[i-1] = Sim;
23 else
24 Valores[i-1] = No;
25 }
26 Saida = Saida + Campos[i-1]+:+Valores[i-1]+\n;
27 }
28

}
29 if (Saida.equals()){
30 JOptionPane.showMessageDialog(null,Matrcula Inexistente!);
31 }
32 else{
33 Escolha = JOptionPane.showInputDialog(Conrma a alterao do Aluno:\n+
34 Saida+\n+
35 Sim(S) - No(N));
36 if (Escolha.equalsIgnoreCase(S)){
37 i=2;
38 while (i<=19){
39 Valores[i-1] = JOptionPane.showInputDialog(
40 Campos[i-1],Valores[i-1]);
41 if( Valores[i-1].equals() && (Campos[i-1].indexOf(*) != -1)){
42 JOptionPane.showMessageDialog(null,
43 Este campo obrigatrio \n+
44

Por Favor, recadastre-o!);
45 }
46 else{
47 if (i==19 && (!Valores[i-1].equals())){
48 if (Valores[i-1].charAt(0) == S ||
49 Valores[i-1].charAt(0) == s)
50 Valores[i-1] = 1; //Sim
51 else
52 Valores[i-1] = 0; //No
53 }
54 i++;
55 }
56 }
57 Operacao = Update Alunos set ;
58 for (i=1;i<19;i++){
59 if (!Valores[i].equals()){
60 Operacao = Operacao + NomesColunas[i] + =+
61 FormatoCampo(i+1,Valores[i]);
SEGUE
Banco_dadosII-fechado.indb 196 18/6/2007 13:59:59
197
Banco de Dados II
Unidade 8
62 if (i < 18){
63 Operacao = Operacao + ,;
64 }
65 }
66 }
67 Operacao = Operacao + where Matricula = + Mat;
68 Comando.ExecutarComando(Operacao);
69 }
70 }
71 }catch(Exception e){
72 System.out.println(Alterao no pode ser feita!+e.getMessage());
73 }
74

75 }
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.
Banco_dadosII-fechado.indb 197 18/6/2007 13:59:59
198
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.
Banco_dadosII-fechado.indb 198 18/6/2007 13:59:59
199
Banco de Dados II
Unidade 8
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++;
}
}
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.
Banco_dadosII-fechado.indb 199 18/6/2007 13:59:59
200
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.
Banco_dadosII-fechado.indb 200 18/6/2007 14:00:00
201
Banco de Dados II
Unidade 8
Por enquanto, d uma analisada no cdigo a seguir que apresenta
todas as rotinas implementadas pela classe Alunos:
1 import javax.swing.*;
2 import java.sql.*;
3 import java.util.*;
4
5 class Alunos{
6
7 private ResultSetMetaData Rsmd;
8 private ComandosSQL Comando;
9 private String NomesColunas[] = new String [19];
10 private String Campos[] =
11 {Matrcula * ,
12 Nome * ,
13 Data de Nascimento * ,
14 Idade * ,
15 CPF,
16 RG,
17 Nome do Pai * ,
18 Nome da Me * ,
19 Endereo * ,
20 Nmero * ,
21 Cidade * ,
22 Estado * ,
23 Bairro * ,
24 Telefone ,
25 Celular,
26 Responsvel,
27 Alrgico a,
28 Grupo Sanguneo,
29 Doador de Orgos Sim/No
30 };
31
32
33 public Alunos(){
34 Comando = new ComandosSQL();
35 Comando.AbrirConexao(AcessoDB,root,virtual);
36 if (!Comando.getConectou()){
37 JOptionPane.showMessageDialog(null,Erro de Conexo com Banco de Dados\n +
38 Entre em contato com Suporte ! \n +
39 A aplicao ser FECHADA ! );
40 System.exit(0);
41 }
42 else{
SEGUE
Banco_dadosII-fechado.indb 201 18/6/2007 14:00:00
202
Universidade do Sul de Santa Catarina
43 try{
44 Comando.ExecutarComando(select * from alunos);
45 ResultSet res = Comando.getResultadoSQL();
46 GerarNomesColunas(res);
47 }catch(Exception e){
48 System.out.println(Erro Gerando Nome das Colunas);
49 }
50 }
51 }
52
53 public boolean MatriculaExiste(String Mat){
54 try{
55 Comando.ExecutarComando(select * from alunos where Matricula = + Mat);
56 ResultSet rs = Comando.getResultadoSQL();
57 return (rs.next());
58 }catch(Exception e){
59 System.out.println(Erro Pesquisando Matricula.);
60 return true;
61 }
62
63 }
64
65
66 public void GerarNomesColunas(ResultSet rs){
67
try{
68 Rsmd = rs.getMetaData();
69 for (int i = 1; i <= Rsmd.getColumnCount(); i++)
70 NomesColunas[i-1] = Rsmd.getColumnName(i);
71 }catch(Exception e){
72 System.out.println(Erro Gerando Nome das Colunas);
73 }
74 }
75
76 public String FormatoCampo(int Pos,String Valor){
77
String Saida=Valor;
78
try{
79 switch(Rsmd.getColumnType(Pos))
80 {
81 case Types.VARCHAR:Saida = + Valor +;
82 break;
83 case Types.DATE: Saida = +Valor +;
84 break;
85 case Types.INTEGER: Saida = Valor;
86 break;
87 case Types.CHAR: Saida = +Valor+;
SEGUE
Banco_dadosII-fechado.indb 202 18/6/2007 14:00:00
203
Banco de Dados II
Unidade 8
88 break;
89 case Types.FLOAT:Saida = Valor;
90 break;
91 }
92 return Saida;
93 }catch(Exception e) {
94 return Saida;
95 }
96
97 }
98
99 public void CadastrarDados(){
100 int i=0,itens=0,j=0;
101 String Escolha = S;
102 String Mensagem = Conrma o Cadastro dos Seguintes Dados: \n;
103 String Colunas=,Dados=,Operacao=;
104 String ValorLido=;
105 JOptionPane.showMessageDialog(null, Cadastro de ALUNOS \n+
106 Os campos com * so Obrigatrios!);
107 String Valores[] = new String[19];
108
109 while (i < 19){
110 Valores[i] = JOptionPane.showInputDialog(null,Campos[i]);
111 ValorLido = Valores[i];
112 do{
113 if (i == 0 && MatriculaExiste(ValorLido)){
114
JOptionPane.showMessageDialog(null,Este Nmero de Matrcula j
foi usado!\n+
115 Informe um novo cdigo para Matrcula);
116 ValorLido = JOptionPane.showInputDialog(null,Campos[i]);
117 Valores[i] = ValorLido;
118

}
119 }while(i==0 && MatriculaExiste(ValorLido));
120


121 if( Valores[i].equals() && (Campos[i].indexOf(*) != -1)){
122 JOptionPane.showMessageDialog(null, Este campo obrigatrio \n+
123 Por Favor, recadastre-o!);
124 }
125 else{
126 i++;
127 }
128 if (!ValorLido.equals())
129 itens++;
130 }
131 if (!Valores[18].equals()){
132 if (Valores[18].charAt(0) == S || Valores[18].charAt(0) == s)
SEGUE
Banco_dadosII-fechado.indb 203 18/6/2007 14:00:00
204
Universidade do Sul de Santa Catarina
133 Valores[18] = 1; //Sim
134 else
135 Valores[18] = 0; //No
136 }
137 j=0;
138 for(i=0;i<19;i++){
139 if (!Valores[i].equals()){
140 Mensagem = Mensagem + Campos[i] + : + Valores[i]+\n;
141 Colunas=Colunas+NomesColunas[i];
142 Dados =Dados +FormatoCampo(i+1,Valores[i]);
143 if (j < itens-1){
144 Colunas=Colunas + ,;
145 Dados = Dados + ,;
146
147 }
148 j++;
149 }
150 }
151 Escolha = JOptionPane.showInputDialog(Mensagem + \n Sim(S) - No(N));
152 if (Escolha.equalsIgnoreCase(S)){
153 Operacao = insert into alunos(+Colunas+) values (+Dados+);
154 try{
155 Comando.ExecutarComando(Operacao);
156 }catch(Exception e){
157 System.out.println(e.getMessage());
158 }
159 }
160
161 }
162
163 public void ExcluirPorMatricula(){
164 String Valores[] = new String[19];
165 String Escolha = S;
166 String Saida = ;
167 String Mat = JOptionPane.showInputDialog(Informe a Matrcula para Excluso:);
168 try{
169 Comando.ExecutarComando(select * from alunos where Matricula = + Mat);
170 ResultSet rs = Comando.getResultadoSQL();
171 if (rs.next()){
172 Rsmd = rs.getMetaData();
173 for (int i = 1; i <= 2; i++) {
174 Valores[i-1] = rs.getString(Rsmd.getColumnName(i));
175 Saida = Saida + Campos[i-1]+:+Valores[i-1]+\n;
176 }
SEGUE
Banco_dadosII-fechado.indb 204 18/6/2007 14:00:00
205
Banco de Dados II
Unidade 8
177 }
178
179 if (Saida.equals()){
180 JOptionPane.showMessageDialog(null,Matrcula Inexistente!);
181 }
182 else{
183 JOptionPane.showInputDialog(Conrma a excluso do Aluno:\n+
184 Saida+\n+
185 Sim(S) - No(N));
186 if (Escolha.equalsIgnoreCase(S))
187 Comando.ExecutarComando(Delete from alunos where Matricula = + Mat);
188 }
189 }catch(Exception e){
190 System.out.println(Excluso no pode ser feita!+e.getMessage());
191 }
192

193 }
194
195 public void AlterarPorMatricula(){
196 int i;
197 String Valores[] = new String[19];
198 String Saida = ;
199 String Escolha = S;
200 String ValorLido = ;
201 String Colunas = ;
202 String Dados = ;
203 String Operacao = ;
204 String Mat = JOptionPane.showInputDialog(Informe a Matrcula para Alterao:);
205 try{
206 Comando.ExecutarComando(select * from alunos where Matricula = + Mat);
207 ResultSet rs = Comando.getResultadoSQL();
208 if (rs.next()){
209 Rsmd = rs.getMetaData();
210 for (i=1;i <= Rsmd.getColumnCount();i++){
211 Valores[i-1] = rs.getString(Rsmd.getColumnName(i));
212 if (i == 19){
213 if(Valores[i-1].equals(1))
214 Valores[i-1] = Sim;
215 else
216 Valores[i-1] = No;
217 }
218 Saida = Saida + Campos[i-1]+:+Valores[i-1]+\n;
219 }
SEGUE
Banco_dadosII-fechado.indb 205 18/6/2007 14:00:01
206
Universidade do Sul de Santa Catarina
220 }
221
222 if (Saida.equals()){
223 JOptionPane.showMessageDialog(null,Matrcula Inexistente!);
224 }
225 else{
226 Escolha = JOptionPane.showInputDialog(Conrma a alterao do Aluno:\n+
227 Saida+\n+
228 Sim(S) - No(N));
229 if (Escolha.equalsIgnoreCase(S)){
230 i=2;
231 while (i<=19){
232 Valores[i-1] = JOptionPane.showInputDialog(null,Campos[i-1],Valores[i-1]);
233 if( Valores[i-1].equals() && (Campos[i-1].indexOf(*) != -1)){
234
JOptionPane.showMessageDialog(null, Este campo obrigatrio
\n+
235 Por Favor, recadastre-o!);
236 }
237 else{
238 if (i==19 && (!Valores[i-1].equals())){
239
if (Valores[i-1].charAt(0) == S || Valores[i-1].charAt(0)
== s)
240 Valores[i-1] = 1; //Sim
241 else
242 Valores[i-1] = 0; //No
243 }
244 i++;
245 }
246 }
247 Operacao = Update Alunos set ;
248 for (i=1;i<19;i++){
249 if (!Valores[i].equals()){
250 Operacao = Operacao + NomesColunas[i] + =+
251 FormatoCampo(i+1,Valores[i]);
252 if (i < 18){
253 Operacao = Operacao + ,;
254 }
255 }
256 }
257 Operacao = Operacao + where Matricula = + Mat;
258 Comando.ExecutarComando(Operacao);
259 }
260 }
261 }catch(Exception e){
262 System.out.println(Alterao no pode ser feita!+e.getMessage());
263 }
264 }
265 }
Banco_dadosII-fechado.indb 206 18/6/2007 14:00:01
207
Banco de Dados II
Unidade 8
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.
Banco_dadosII-fechado.indb 207 18/6/2007 14:00:01
208
Universidade do Sul de Santa Catarina
Atividades de auto-avaliao
1. Qual a fnalidade em se criar uma rotina de verifcao 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

Banco_dadosII-fechado.indb 208 18/6/2007 14:00:01


9
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.
Banco_dadosII-fechado.indb 209 18/6/2007 14:00:01
210
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.
Banco_dadosII-fechado.indb 210 18/6/2007 14:00:01
211
Banco de Dados II
Unidade 9
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.

Banco_dadosII-fechado.indb 211 18/6/2007 14:00:01


212
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, pode-
se 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.

Banco_dadosII-fechado.indb 212 18/6/2007 14:00:02


213
Banco de Dados II
Unidade 9
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.

Banco_dadosII-fechado.indb 213 18/6/2007 14:00:02


214
Universidade do Sul de Santa Catarina
Essas duas estruturas trabalham em paralelo, pois utilizam os
mesmos ndices de armazenamento, veja:
0 1 17 18
Nomes Colunas Matricula Nome ... Grupo_Sangue Doador
Campos Matrcula * Nome * ... Grupo_Sanguneo 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.
Banco_dadosII-fechado.indb 214 18/6/2007 14:00:02
215
Banco de Dados II
Unidade 9
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 public int Posicao(String Item){
2 int i=0;
3 while((i < 19) && ((!NomesColunas[i].equalsIgnoreCase(Item)))
4 i++;
5 return (i+1);
6 }
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:
0 1 17 18
Nomes Colunas Matricula Nome ... Grupo_Sangue Doador
Banco_dadosII-fechado.indb 215 18/6/2007 14:00:02
216
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 public Vector MontarIndices(String Colunas){
2 Vector Indices = new Vector();
3 String Coluna=;
4 Colunas = Colunas + ,;
5 for (int i=0;i< Colunas.length();i++){
6 if (Colunas.charAt(i) != ,){
7 Coluna = Coluna + Colunas.charAt(i);
8 }
9 else{
10 Indices.addElement(Posicao(Coluna)+);
11 Coluna = ;
12 }
13 }
14 return Indices;
15 }
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 defnido 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 + ,);
Banco_dadosII-fechado.indb 216 18/6/2007 14:00:02
217
Banco de Dados II
Unidade 9
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.
Banco_dadosII-fechado.indb 217 18/6/2007 14:00:02
218
Universidade do Sul de Santa Catarina
1 public String SelecionarItens(){
2 char Continua = S, Escolha = S;
3 int i=0;
4 String Escolhidas = ;
5 do{
6 if ((Escolhidas.length() > 0 ) && (Escolha == S || Escolha == s))
7 Escolhidas = Escolhidas + ,;
8 Escolha = JOptionPane.showInputDialog(
9 Selecionar o campo: +
10 Campos[i] +
11 \n S-Sim N-No,S).charAt(0);
12 if(Escolha == S || Escolha == s){
13 Escolhidas = Escolhidas + NomesColunas[i];
14 }
15 i++;
16 Continua = JOptionPane.showInputDialog(
17 Deseja Sair? Sim(S) - No (N),N).charAt(0);
18 }while (i < 19 && (Continua == N || Continua == n));
19 return Escolhidas;
20 }
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:
Banco_dadosII-fechado.indb 218 18/6/2007 14:00:03
219
Banco de Dados II
Unidade 9
1 public void Consultar(String Colunas, String Campo,String Valor){
2 String Saida = ;
3 Vector Selecionados = MontarIndices(Colunas);
4 char Continua = S;
5 String Valores[] = new String[19];
6 int i=0,pos=0;
7 try{
8 Comando.ExecutarComando(select + Colunas +
9 from alunos where + Campo +
10 like % + Valor +%);
11 ResultSet rs = Comando.getResultadoSQL();
12 while ((Continua == S || Continua == s) && (rs.next())){
13 Saida = ;
14 Rsmd = rs.getMetaData();
15 i=1;
16 pos=0;
17 while( i < 19){
18 if (Selecionados.contains(i+)){
19 Valores[pos] = rs.getString(Rsmd.getColumnName(pos+1));
20 if (i == 19 && Selecionados.contains(i+)){
21 if(Valores[pos].equals(1))
22 Valores[pos] = Sim;
23 else
24 Valores[pos] = No;
25 }
26 Saida = Saida + Campos[i-1]+:+Valores[pos]+\n;
27 pos++;
28 }
29 i++;
30 }
31 JOptionPane.showMessageDialog(null,Saida);
32 Continua = JOptionPane.showInputDialog(
33 Continuar a Listagem? Sim(S) - No (N)).charAt(0);
34 }
35 if (Saida.equals()){
36 JOptionPane.showMessageDialog(null,Campo + Inexistente!);
37 }
38
39 }catch(Exception e){
40 System.out.println(Consulta no pode ser feita!+e.getMessage());
41
}

42 }
Banco_dadosII-fechado.indb 219 18/6/2007 14:00:03
220
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 public void ConsultarTodos(){
2 String Saida = ;
3 char Continua = S;
4 String Valores[] = new String[19];
5 int i=0;
6 try{
7 Comando.ExecutarComando(select * from alunos);
8 ResultSet rs = Comando.getResultadoSQL();
9 while ((Continua == S || Continua == s) && (rs.next())){
10
Saida = ;

11 Rsmd = rs.getMetaData();
12 for (i=0; i < Rsmd.getColumnCount();i++){
13 Valores[i] = rs.getString(Rsmd.getColumnName(i+1));
14 if (i == 18){
15 if(Valores[i].equals(1))
16 Valores[i] = Sim;
17 else
18 Valores[i] = No;
19 }
20 Saida = Saida + Campos[i]+:+Valores[i]+\n;
21
22 }
23 JOptionPane.showMessageDialog(null,Saida);
24 Continua = JOptionPane.showInputDialog(
25 Continuar a Listagem? Sim(S) - No (N),S).charAt(0);
26 }
27 }catch(Exception e){
28 System.out.println(Consulta no pode ser feita!+e.getMessage());
29
}

30 }
Banco_dadosII-fechado.indb 220 18/6/2007 14:00:03
221
Banco de Dados II
Unidade 9
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 public void Menu(){
2 int op=0;
3 String ColunasPesq = ;
4 String Procura = ;
5 do{
6 op = Integer.parseInt(JOptionPane.showInputDialog( Cadastro de Alunos \n+
7 1-Cadastrar\n+
8 2-Excluir\n+
9 3-Alterar\n+
10 4-Consultar por Nome\n+
11 5-Consultar por Matrcula\n+
12 6-Consultar Todos\n+
13 7-Sair,7));
14 switch (op){
15 case 1:CadastrarDados();
16 break;
17 case 2:ExcluirPorMatricula();
18 break;
19 case 3:AlterarPorMatricula();
20 break;
21 case 4:ColunasPesq = SelecionarItens();
22 Procura = JOptionPane.showInputDialog(Nome para Pesquisa:);
23 Consultar(ColunasPesq,Nome,Procura);
24 break;
25 case 5:ColunasPesq = SelecionarItens();
26 Procura = JOptionPane.showInputDialog(Matrcula para Pesquisa:);
27 Consultar(ColunasPesq,Matricula,Procura);
28 break;
29 case 6:ConsultarTodos();
30 break;
31 }
32 }while(op != 7);
33 }
Banco_dadosII-fechado.indb 221 18/6/2007 14:00:03
222
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 class Dados_Alunos{
2 public static void main(String args[]){
3 Alunos A = new Alunos();
4 A.Menu();
5 System.exit(0);
6 }
7 }
Banco_dadosII-fechado.indb 222 18/6/2007 14:00:04
223
Banco de Dados II
Unidade 9
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?
Banco_dadosII-fechado.indb 223 18/6/2007 14:00:04
224
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.
Banco_dadosII-fechado.indb 224 18/6/2007 14:00:04
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?
Banco_dadosII-fechado.indb 225 18/6/2007 14:00:04
226
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 encurt-
la!
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
Banco_dadosII-fechado.indb 226 18/6/2007 14:00:05
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.
Banco_dadosII-fechado.indb 227 18/6/2007 14:00:05
Banco_dadosII-fechado.indb 228 18/6/2007 14:00:05
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 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.
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.
Banco_dadosII-fechado.indb 229 18/6/2007 14:00:05
Banco_dadosII-fechado.indb 230 18/6/2007 14:00:05
Respostas e comentrios das
atividades de auto-avaliao
Unidade 1
1. A maioria das profsses 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 profssional 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 justifcar 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 profssionais
de outras reas em desenvolver ferramentas na rea da
computao.
Outra justifcativa 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 profsso como justifcativa para se exigir o
diploma.
As profsses 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 profssional 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.
Banco_dadosII-fechado.indb 231 18/6/2007 14:00:05
232
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
defnidas, 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, confana e cordialidade. Ele deve se sentir seguro com
relao ao que ele contratou e com o que ele ter como produto fnal.
Durante a fase de implementao muito comum que se apresente ao
cliente pequenas verses do produto fnal para sua prvia aprovao.
Estas pequenas verses so chamadas de prottipo, que alm de
verifcar 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 profssionais 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 refetindo 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 felmente o banco de dados utilizado. Esta
afrmao esta correta? Justifque a sua resposta.
Resposta:
O banco de dados fsico, criado a partir de um script, ou no, deve
representar felmente as regras e tabelas especifcadas no modelo de

Banco_dadosII-fechado.indb 232 18/6/2007 14:00:05


233
Banco de Dados II
dados. O modelo de dados representa grafcamente 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 vice-
versa.
3. O MySQL permite a execuo de um script de criao de tabelas de um
banco de dados sem que tenha sido especifcado 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 especifcar 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 profssional 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 afrmao correta? Qual a sua opinio?
Resposta:
No. Qualquer profssional, 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 profssional que no estiver atualizado, passa
a fcar obsoleto. So muitas as tecnologias que surgiram como a melhor
soluo, e pouco tempo depois, sumiram do mercado, levando com
elas os profssionais que tinham ali a nica forma de exercer as suas
atividades.
Banco_dadosII-fechado.indb 233 18/6/2007 14:00:05
234
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
afrmar 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 afrmativa correta? Justifque 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 profssionais no precisam saber como o driver
foi implementado, qual linguagem foi usada, apenas precisam ter
certeza de que o driver confvel 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 profssional 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.
Banco_dadosII-fechado.indb 234 18/6/2007 14:00:06
235
Banco de Dados II
2. Seria correto afrmar 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 signifcativa, que possa indicar o problema , do
que simplesmente uma mensagem do tipo, houve erro. Mesmo que a
mensagem do mtodo getMessage() seja em ingls.
Banco_dadosII-fechado.indb 235 18/6/2007 14:00:06
236
Universidade do Sul de Santa Catarina
2. Na defnio de uma classe em Java, possvel atualizar o valor de um
atributo diretamente, sem que se use o seu mtodo modifcador. Esta
forma de implementao pode ser considerada equivocada?
Resposta:
Veja o exemplo a seguir:
O uso dos mtodos modifcadores 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
modifcador alterar o valor de um atributo, e deve ser esta a nica
forma de modifcao utilizada. Alm disto, o modifcador 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 modifcador, 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).
Banco_dadosII-fechado.indb 236 18/6/2007 14:00:06
237
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 fca sabendo disto.
Unidade 8
1. Qual a fnalidade em se criar uma rotina de verifcao 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 desconfana 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 felmente 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, efciente e correta, caso contrrio o sistema
no funcionar.
Banco_dadosII-fechado.indb 237 18/6/2007 14:00:06
Banco_dadosII-fechado.indb 238 18/6/2007 14:00:06

Você também pode gostar