Академический Документы
Профессиональный Документы
Культура Документы
1
2
2
3
AGRADECIMENTOS
Colocarei os agradecimentos
3
4
SUMÁRIO
LISTA DE FIGURAS
INTRODUÇÃO
ORGANIZAÇÃO DO DOCUMENTO
INTRODUÇÃO
FUNDAMENTOS DE SISTEMAS DE BANCO DE DADOS
MODELOS DE DADOS
FUNDAMENTOS DE ENGENHARIA DE SOFTWARE
PARADIGMA DE ORIENTAÇÃO A OBJETO
LINGUAGEM DE PROGRAMAÇÃO JAVA
4
5
LISTA DE FIGURAS
5
6
SINOPSE
Atualmente o meio academico necessita uma ferramenta
CASE para a modelagem de dados. Tendo em vista tal carência
e a dificuldade em conseguir uma ferramenta deste tipo
licenciada, de domínio público e que se ajuste as necessidades
das disciplinas, foi sugerido pelo professor e mestre Ronaldo de
Oliveira Lopes a criação da mesma, como uma proposta de
resolver tal problema, de forma a aproveitandar os projetos
finais dos alunos do curso de Cinência da Computação.
Esta ferramenta deve ser usada, a principio, nos
laboratórios da Universidade de Católica de Goiás, pelos alunos
das disciplinas de Engenharia de Software, Análise e Projeto de
Sistema, Banco de Dados I e Banco de Dados II.
A ferramenta visa modelar esquemas conceituais
entidade relacionamento, mapear estes esquemas para esquemas
lógicos de implementação relacional, gerar o script do esquema
relacional, podendo executar o script diretamente no próprio
SGDB PostgreSQL.
Com o intuito continuar o projeto, esta monografia
apresentará os principais conceitos de Banco de Dados e de
6
7
ORGANIZAÇÃO DO DOCUMENTO
7
8
CAPÍTULO I
INTRODUÇÃO
1.1. APRESENTAÇÃO
A criação de um Diagrama de Entidade Relacionamento
à mão é muito trabalhosa, pois, durante o processo de
8
9
1.2. MOTIVAÇÃO
A principal motivação deste projeto é construir uma
9
10
10
11
CAPÍTULO II
FUNDAMENTOS DE SISTEMAS DE BANCO DE DADOS
2.1 INTRODUÇÃO
11
12
Nível Físico
É o nível mais baixo e descreve como os dados estão
realmente armazenados fisicamente. Geralmente é utilizado
apenas por DBAs (Administradores de Banco de Dados) para
otimizar consultas e acessos ao banco.
Nível Lógico
É um nível médio de abstração. Este nível de abstração
descreve logicamente o conjunto de dados informando quais
dados devem ser armazenados, quais os inter-relacionamentos
entre eles e as regras de integridade que eles devem obedecer.
Sendo assim o banco de dados pode ser descrito usando um
número pequeno de estruturas neste nível.
Nível de Visão
É o nível mais alto de abstração e descreve uma visão
dos dados armazenados no banco de dados do ponto de vista de
uma aplicação ou de um usuário em particular.
Podem ser definidas varias visões para o mesmo banco
de acordo com os usuários/aplicações que o utilizam. Esta
divisão, em diferentes níveis de representação, permite uma
maior independência de dados ou comparação com arquivos.
A independência de dados é a capacidade de modificar a
definição dos esquemas em determinado nível, sem afetar os
esquemas dos níveis superiores. Há dois tipos de independência
de dados: física e lógica.
12
13
13
14
14
15
15
16
17
18
CAPITULO III
MODELOS DE DADOS
3.1 INTRODUÇÃO
A modelagem conceitual visa obter uma descrição
abstrata dos dados independente da implementação no SGBD.
Neste capitulo iremos citar vários exemplos de modelagem
começando pela modelagem de entidade relacionamento. Iremos
verificar a definição do modelo lógico e também a modelagem
UML padrão.
3.2.1 ENTIDADE
Entidade é um conjunto de objetos da realidade, sobre os
quais se deseja manter informações no banco de dados. Uma
entidade pode representar tanto objetos concretos da realidade
como uma pessoa ou abstratos como um departamento.
Em um DER (Diagrama de Entidade e Relacionamento)
o conjunto de entidades é representada por um retângulo que
18
19
3.2.2 RELACIONAMENTO
3.2.2.1 CONCEITO
O relacionamento é caracterizado pela associação entre
objetos, ou seja, o relacionamento é um conjunto de associações
entre entidades que também deve ser mantido pelo banco de
dados.
No DER o relacionamento é representado por um
losango ligado por linhas que se conectam aos retângulos dos
conjuntos de entidades relacionadas representado pela figura
2.1.
U C
19
20
P essoa
C
as
ad
os
Figura 2.2 Auto Relacionamento
p1. p3.
p2 p5
20
21
(0 ,N ) (1 .1 )
Po
P essoa C a rg o
ss
ui
21
22
(1 ,N ) (1 .N )
Le na
P ro fe s s o r M a té r ia
ci
o
(0 ,N ) (1 .1 )
Po ui
P ro d u to T ip o
ss
(0 ,1 ) (0 .1 )
Po ui
F u n c io n a r io M esa
ss
Figura 2.7 Exemplo de relacionamento 1 para 1
3.2.3 ATRIBUTOS
Os atributos descrevem as entidades e os
relacionamentos associando informações a eles. Um atributo
pode possuir uma cardinalidade, de maneira análoga a uma
entidade em um relacionamento isto define quantos valores
deste atributo podem estar associados a uma ocorrência da
entidade/relacionamento a qual ele pertence.
23
24
S exo S exo
N om e
N om e F u n c io n a r io
F u n c io n a r io
C PF
C PF
Figura 2.8 Figura 2.9
Atributos Atributos
caracterizados por
circunferências
caracterizados por
Elipses
F u n c io n a r io
C PF
S e xo
N om e F u n c io n a r io
C PF
26
27
S e c r e tá r ia P
M o to r is ta
F u n c io n a r io
C lta
M e d ic o M e d ic o P a c ie n te
on
su
Pr içã
es
cr o
M e d ic a m e n to
3.2.4.3 AGREGAÇÃO
Permite que um conjunto de entidades que se relacionam,
sejam consideradas como uma entidade distinta. Por exemplo,
um usuário que possui um cargo, ou seja, uma entidade cargo se
relaciona com a entidade usuário tendo em vista uma agregação
que se relaciona com departamento. Sendo assim o usuário que
possui tal cargo se relacionara com departamento como na
figura 2.14.
Po ui
F u n c io n a r io C a rg o
ss
Po ui
ss
D e p a rta m e n to
28
29
3.2.4.4 MULTIPLICIDADE
Este conceito indica a cardinalidade mínima e máxima
de um relacionamento entre parêntese do lado oposto da
entidade. O primeiro número indica a relação mínima no caso de
zero como já vimos é uma relação opcional no caso de um a
relação é obrigatória. O segundo número indica a relação
máxima de muitos ou apenas um.
29
30
30
31
31
32
32
33
33
34
34
35
3.4.1.1 TABELAS
Uma tabela é composta por tuplas que são linhas de
registros e campos. Cada campo é identificado por um nome. O
conjunto de campos homônimo de todas as linhas de uma tabela
forma uma coluna.
Nome do Campo
Emp Coluna (atributo) (nome do atributo)
CodigoEmp Nome CodigoDepto CategFuncional
E1 luiz C4 32
E29 fernando C21 34 Linha (Tupla)
E7 Batista C8 34
E4 Loja C8
valor do campo
(valor do atributo)
3.4.1.2 CHAVES
Para distinguir uma linha das demais e estabelecer
relações com outras tabelas dentro do banco de dados foi criado
o conceito de chave. As chaves podem ser enquadradas em três
tipos: chave primária, chave alternativa e chave estrangeira.
35
36
36
37
37
38
38
39
39
40
40
41
41
42
42
43
43
44
44
45
45
46
47
48
48
49
49
50
50
51
51
52
52
53
53
54
54
55
55
56
CAPÍTULO IV
FUNDAMENTOS DE ENGENHARIA DE
SOFTWARE
4.1 INTRODUÇÃO
Sistemas informatizados têm enorme potencial de trazer
benefícios. Têm também enorme potencial de trazer prejuízos,
quando feitos de forma errada. O software é a alma dos sistemas
informatizados, e a engenharia de software tem como objetivo a
construção de produtos reais a partir dos conceitos fundamentais
da informática. Apresentaremos características básicas da
engenharia de software junto à metodologia que está sendo
usada no projeto.
56
57
57
58
4.4.1.1 UML
A UML (Unified Modeling Language ou Linguagem de
Modelagem Unificada) é uma linguagem para modelagem visual
utilizada para modelar sistemas computacionais por meio do
paradigma de Orientação a Objetos.
O objetivo da linguagem é auxiliar os desenvolvedores a
58
59
4.4.1.2 DIAGRAMAS
Os diagramas são formas visuais de representar a UML
de maneira simples e de fácil compreensão.
A UML é composta por vários diagramas com o intuito
de dar múltiplas visões do sistema a ser modelado, analisando-o
e modelando-o sob diversos aspectos, procurando-se assim
atingir a plenitude da modelagem, permitindo que cada
diagrama complete os outros.
59
60
atores.
4.4.1.5 DIAGRAMA DE MÁQUINA DE ESTADOS
Este diagrama procura acompanhar as mudanças sofridas
por um objeto dentro de um determinado processo. O diagrama
de Estados é utilizado normalmente para acompanhar os estados
por que passa uma instância de uma classe, no entanto pode ser
utilizado para representar os estados de um caso de uso ou
mesmo os estados gerais de um sub-sistema ou de um sistema
completo.
60
61
4.4.3.1 REQUISITOS
Nesta etapa, o desenvolvedor busca compreender as
necessidades do usuário e o que ele deseja que o sistema a ser
desenvolvido realize. Sendo assim o desenvolvedor tentara
levantar o máximo de informações possíveis sobre o sistema a
ser desenvolvido visando uma compreensão do problema
existente para que segue desenvolvido um sistema que resolva
tal necessidade.
Os requisitos são geralmente divididos em requisitos
funcionais e não funcionais.
Os requisitos funcionais são: os requisitos determinados pelo
usuário, ou seja, aquilo que o usuário do sistema deseja que
o software faça independente da maneira com a qual o
programa executara esta função. Como, por exemplo, a
necessidade de emissão de notas fiscais ou que o software
gere um relatório com o lucro diário que a empresa está
tendo.
Os requisitos não funcionais são: aquelas restrições nos
serviços do sistema, tais como tempo de resposta, segurança,
viabilidade, disponibilidade, normas, etc.
62
63
4.4.3.2.1 GENERALIZAÇÃO
O relacionamento Generalização é uma forma de
Associação entre Casos de Uso na qual existem dois ou mais
Casos de Uso com características semelhantes, apresentando
pequenas diferenças entre si.
4.4.3.2.2 INCLUSÃO
A Associação de Inclusão costuma ser utilizada quando
existe um serviço, situação ou rotina comum a mais de um Caso
de Uso. Quando isso ocorre, a documentação dessa rotina é
colocada em um Caso de Uso específico para que outros Casos
de Uso utilizem-se desse serviço, evitando-se descrever uma
mesma seqüência de passos em vários Casos de Uso.
4.4.3.2.3 EXTENSÃO
63
64
64
65
65
66
CAPÍTULO V
PARADIGMA DE ORIENTAÇÃO A OBJETO
66
67
67
68
5.2 OBJETOS
Por definição, um objeto pode ser entendido como
alguma coisa que exista que possua características, e que faz
algo. O objeto possui atributos (variáveis) e comportamento
(métodos), tal qual o mesmo objeto visto no mundo real. Estas
variáveis que representam os atributos dos objetos devem
possuir um domínio, elas podem ser números inteiros, números
reais, cadeias de caracteres, um único caractere, entre outros
tipos definidos por cada linguagem.
Com o desenvolvimento do programa vários objetos são
criados e finalizados pelo software. Quando um objeto é criado
dizemos que este objeto foi e quando ocorre a eliminação de um
objeto podemos dizer que ele foi finalizado. Também podemos
criar objetos que continuam existindo mesmo depois do termino
do programa que os criou chamado objeto persistente. Exemplo
deste tipo de objeto é quando criamos um objeto e colocamos
em um banco de dados ou em um arquivo.
Exemplo:
Ser humano é um Ser Vivo.
Ser vivo possui várias características como cor dos olhos,
cor do cabelo, idade, estatura, sexo, cor da pele entre outros
atributos. O humano se diferencia dos outros humanos pela
variação destes atributos, um é mais alto outro mais baixo,
alguns possuem olhos azuis, outros olhos verdes.
5.3 MÉTODOS
Os métodos são procedimentos pertencentes aos objetos
que manipulam seu comportamento alterando algum dos seus
atributos ou realizando alguma tarefa com os dados passados a
ele. Exemplo: O ser humano pode andar, nadar, comer, dormir,
68
69
5.4 ABSTRAÇÃO
Abstração é uma forma de lidar com a complexidade. Ela
nos dá a possibilidade de ignorar detalhes para nos
concentrarmos nas características fundamentais dos objetos,
permitindo que os objetos sejam representados da forma que for
conveniente e mais interessante. Exemplo:
Ninguém pensa em si mesmo como sendo um conjunto
de dezenas de órgãos individuais. Quando pensamos nos seres
humanos, nós pensamos em um objeto bem definido que realiza
todas as suas funções vitais.
Essa abstração permite que nos, humanos, vivamos sem
nos preocupar como nosso corpo administra suas funções vitais
como digerir alimentos, absorver O2, podemos simplesmente
viver.
5.5 CLASSES
Podemos dizer que classes é o conjunto de todos os
elementos semelhantes, no nosso caso, objetos. Uma classe
define a estrutura e o comportamento (dados e código) que serão
comuns a um conjunto de objetos. Cada objeto de uma dada
classe contém a estrutura e o comportamento definidos pela
classe, como se a classe fosse um molde usado para estampar o
formato de cada um deles. Todo objeto pertence a uma
determinada classe tanto no mundo real quando no “mundo
virtual” (mundo descrito no programa). Este conceito é muito
importante para o paradigma Orientado a Objeto, tendo em vista
que ele permite a reutilização de código (Dedicar mais sobre o
assunto).
A declaração de uma classe é similar ao dos tipos
definidos pelo usuário no paradigma orientado para o processo.
69
70
5.6 ENCAPSULAMENTO
O encapsulamento é o mecanismo que permite agrupar
em uma única entidade o código e os dados que esse código
manipula. Tais elementos ficam assim protegidos contra
interferências externas e utilização inadequada.
Uma forma de pensar no encapsulamento é como um
envoltório protetor que impede que o código e os dados sejam
acessados arbitrariamente por outro trecho de código que esteja
definido fora do envoltório. O acesso ao código e aos dados que
ficam dentro do envoltório é rigidamente controlado por meio de
uma interface bem definida.
5.7 HERANÇA
Uma herança é um processo pelo qual um objeto adquire
as propriedades de outro objeto. A herança é o que viabiliza o
conceito de uma classificação hierárquica e também influencia
70
71
5.8 POLIMORFISMO
Polimorfismo significa muitas formas. Trata-se de uma
característica que permite que uma interface seja usada para uma
classe genérica de ações, sendo que a ação especifica em cada
caso é determinada pela exata natureza da situação. Ou seja o
objeto irá decidir que método irá utilizar dependendo da situação
que for colocada para ele.
O polimorfismo pode ser utilizado de duas maneiras:
Usando “sobrecarga de métodos” (overload), que é
caracterizada quando o método possui o mesmo nome porém
sua assinatura (numero e ou tipo de argumentos que é passado
para o método) é diferente. E quando o método sobrescreve um
método herdado da super classe, caracterizando um override.
72
73
CAPÍTULO VI
LINGUAGEM DE PROGRAMAÇÃO JAVA
73
74
6.2 CARACTERÍSTICAS
A linguagem Java exibe importantes características que,
em conjunto, a diferenciam de outras linguagens de
programação. Dentre as características principais da linguagem
se destacam alguns pontos-chave: é orientada a objetos,
independente de plataforma e de ótima performance, segurança
e com a vantagem de implementações multithreading.
74
75
C o d ig o J a v a C o d ig o J a v a é c r ia d o
C o d ig o J a v a é c o m p ila d o e
C o m p il a d o r
tra n s fo rm a d o e m b y te c o d e
p e lo c o m p ila d o r
J a v a B y te C o d e B y t e C o d e c r ia d o e m
lin g u a g e m d e m á q u in a
O b y t e c o d e é in t e r p r e t a d o e
t r a d u z id o p a r a o p r o c e s s a d o r
In te r p r e ta d o r d e B y te C o d e
c o m a s is n t r u ç õ e s n a t iv a s d a
m á q u in a h o s p e d e ir a d a
M a q u in a V ir t u a l J a v a
P ro c e s s a d o r e H a rd W a re
6.2.4 DESEMPENHO
A linguagem Java foi projetada para ser compacta e
independente de plataforma e para a utilização em rede, o que
levou à decisão de ser interpretada por intermédio dos esquemas
de bytes. Sendo uma linguagem interpretada, sua performance é
razoável, não podendo ser comparada à velocidade de execução
de código nativo. Para superar essa limitação, várias JVCM
existentes dispõem de compiladores just int itme (JIT), capazes
de compilar os bytecodes em código nativo durante a carga do
programa, possibilitando uma melhora significativa na
performance dos programas Java , equiparando-os ao
desempenho obtido com programas nativos.
6.2.5 SEGURANÇA
Considerando a possibilidade de que as aplicações
possam ser obtidas através de uma rede, a linguagem Java
possui mecanismos de segurança que podem, no caso de applets,
evitar, por exemplo, qualquer operação no sistema de arquivos
da máquina-alvo, minimizando problemas de segurança. Tal
mecanismo é flexível o suficiente para determinar se uma applet
é considerada segura, especificando nesta situação diferentes
níveis de acesso ao sistema-alvo.
76
77
77
78
79
80
6.4.2 Comentários
Os comentários em Java podem ser de uma linha ou de
bloco. Comentário de uma linha utiliza duas barras (//), para
marcar seu inicio.
/*isto é um comentário
80
81
de bloco
aqui é o fim do comentário */
}
}
6.4.3.1 INTEIROS
Existem quatro diferentes tipos de dados inteiros ou
integrais: byte (8bits), short (inteiro curto – 16 bits), int (inteiro
– 32 bits) e long (inteiro longo -64 bits). Todos os tipos inteiros
são internamente representados pelo complemento de 2,
podendo armazenar valores.
81
82
6.4.3.3 CARACTERE
O tipo char permite a representação de caracteres
individuais. O Java utiliza internamente uma representação no
padrão UNICODE, em que cada caractere ocupa 16 bits (2
bytes) sem sinal, o que permite representar até 32.768 caracteres
diferentes. Teoricamente, isso facilitaria muito todo trabalho de
internacionalização de aplicações, embora, na prática, a
compatibilidade oferecia ao UNICODE pela maioria dos
sistemas seja ainda bastante limitada. Em tese., o Java já está
preparado para tal compatibilidade e permite efetivamente a
internacionalização de suas aplicações. O valor literal de
caracteres deve sempre ser delimitado por aspas simples (‘’), tal
como: ‘L’ ‘u’ ‘7’ ‘i’.
6.4.3.4 LÓGICOS
Java dispõe do tipo lógico boolean, capaz de assumir os
valores falso (false) ou verdadeiro (true), isto é, que equivalem
aos estados off (desligado) e on (ligado), ou no (não) e yes
(sim).
6.4.4 VARIÁVEIS
O nome de uma variável em Java pode ser formado por
uma seqüência de um ou mais caracteres alfabéticos e
numéricos, iniciados por uma letra ou ainda pelos caracteres ‘_’
(underscore) ou ’$’ (cifrão). Os nomes não podem conter outros
símbolos gráficos, operadores ou espaços em branco, podendo
ser arbitrariamente longos, embora apenas os primeiros 32
caracteres sejam utilizados para distinguir nomes de diferentes
variáveis. Como a linguagem Java é sensível ao caso, o que
significa que letras maiúsculas e minúsculas são distintas.
82
83
abstra
ct if int
s
u
p throw
float er s
c
at defau
public h lt
i
m
pl
e
m
e
boole nt interf
an s ace
s
w
it
c transi
for h ent
83
84
c
h
return ar do
i
m
p
or
break t long
si
n
c
hr
o
ni
z
functi e
on d true
cl
as doubl
short s e
nativ
byte in e
th
goto is try
c
o
n
static st else
case in new
st
a
n
c
e
84
85
of
th
ro
void w var
c
o
nt
in
u exten
false e ds
w
packa hi
ge le null
w
it privat
final h e
pr
ot
e
ct
e
finally d
85
86
int I ; // inicio de i
86
87
6.4.5 OPERADORES
A linguagem Java oferece um conjunto bastante amplo
de operadores destinados à realização de operações de
atribuição, aritméticas, lógicas e relacionais.
Op S A S E
era i s i x
dor g s n e
n o t m
if c a p
87
88
i
i a
c t
a i
d v x l
o o e o
2
E
s
+
q
u
2
S e
o r x =
m d +
+ a a x 4
2
S E
u s
-
b q
tr u
2
a e
ç r x =
ã d -
- o a x 0
* M E x 2
u s *
lt q x *
i u
2
p e
li r
=
c d
a a
4
ç
ã
88
89
o
2
E
s
/
D q
i u
2
v e
is r x =
ã d /
/ o a x 1
R
e
st
o
d
e
u
2
m E
a s
%
d q
i u
2
v e
is r x =
ã d %
% o a x 0
++ I E +
n s +
c q x
r u
e e o
m r u
e d
n a x
89
90
/
D
i
r
e
i
t t +
o a +
E
s
q
u
e
r
D d -
e a -
c / x
r D
e i o
m r u
e e
n i x
t t -
-- o a -
O
p S E
e í x
r m e
a b m
ç o p
ã l l
o o o
2
=
=
Ig (
u f
al a
d l
a s
d = o
e = )
D ! 2
if =
er !
e =
nt
e 3
91
92
(
v
e
r
d
a
d
e
i
r
o
)
2
>
(
f
a
l
M s
ai o
or > )
M < 2
e
n <
or
3
92
93
(
v
e
r
d
a
d
e
i
r
o
)
3
>
=
(
v
e
r
M d
ai a
or d
o e
u i
ig r
u > o
al = )
M < 2
93
94
<
=
(
v
e
r
e d
n a
or d
o e
u i
ig r
u o
al = )
Op Sí
era mb
ção olo Exemplo
(3>2) &&
(5>=5) -
E && Verdadeiro
ou || (3<2) ||
(4>1)
94
95
-Verdadeir
o
NE
GA
ÇÃ !(4>2) -
O ! Falso
95
96
Operado
Níveis res
. (seletor)
1 [] ()
++ -- ~
instanceof
new clone
(unário)
2 (cast)
3 */%
4 +-
<< >>
5 >>>
6 < > <= >=
7 == !=
8 &
9 ^
10 |
11 &&
12 ||
13 ?:
14 = op=
15 ,
96
97
97
98
98
99
J = j + 5;
}
do {
// bloco da estrutura
}while(condição)
if (condição){
// corpo da estrutura 1
}
else {
//corpo da estrutura 2
}
99
100
switch (condição) {
case ordinal1 :
//corpo 1
break ;
100
101
case ordinal2 :
//corpo 2
break ;
case ordinal3 :
//corpo 3
break ;
default :
//corpo default
}
101
102
try {
//bloco de try
}
catch (exceção 1){
//bloco da exceção 1
}
catch (exceção 2){
//bloco da exceção 2
}
finally{
//execução grantida
102
103
6.4.7 VETORES
Vetores são estruturas de dados que armazenam
usualmente uma quantidade fixa de dados de um tipo, por esta
razão também são conhecidos como estruturas homogêneas de
dados.
Cada linguagem de programação tem uma sintaxe
diferente para a declaração de vetores, mas em todas elas são
fornecidas três informações: o nome do vetor, o número de
posições do vetor (seu tamanho) e o tipo de dado que será
armazenado pelo vetor. A declaração de um vetor para inteiros,
de nome vetor, com tamanho 10, em Java, poderia ser escrita
assim:
int vetor[];
Podemos notar que as declarações de vetores são
semelhantes às declarações de variáveis, pois o nome do vetor é
acompanhado de colchetes. Embora declarado, o vetor não está
pronto para uso, sendo necessário reservarmos espaço para seus
elementos. Quando o tipo do vetor é simples, tal alocação pode
ser feita como segue.
vetor = new int [10];
int vetor2[] = new int[10];
103
104
104
105
Jdbc.drivers=jdbc.idDriver:outro.driver.Qualquer
A forma mais simples é carregar dinamicamente a classe
que implementa o driver necessário como no trecho a seguir:
try{
Class.forName(“jdbc.idbDriver”);
}
catch(ClassNotFoundException cnfe){
System.err.print(“Driver não encontrado”);
}
105
106
Connection com =
DriverManager.getConnection(url);
Jdbc:<subprotocolo>:<subnome>
Jdbc:oracle:thin@marte.discover.com.br:1526:ORCL
106
107
CONCLUSÃO
107
108
108
109
REFERENCIAS BIBLIOGRAFIA
109