You are on page 1of 7

Linguagem de Programao IV JDBC

Acesso a bancos de dados com o JDBC (Java Database Connectivity)


1. INTRODUO Um banco de dados uma coleo organizada de dados. Existem formas distintas para organizar dados a fim de facilitar seu acesso e manipulao. Para isso, utiliza-se algum sistema de gerenciamento de bancos de dados (DBMS database management system) que ser capaz de fornecer mecanismos para armazenar, organizar, recuperar e modificar dados para muitos usurios. Atualmente, os sistemas mais utilizados so os bancos de dados relacionais representaes lgicas de dados que permitem o acesso aos dados sem considerar sua estrutura fsica. Um banco de dados relacional armazena dados em tabelas, compostas de linhas e colunas. Os sistemas de gerenciamento de bancos de dados relacional mais conhecidos so: Oracle, PostgreeSQL, MySQL e IBM DB2. Para que os programas em Java se comuniquem com bancos de dados e manipulem seus dados, utilizado a API (Aplication Program Interface) do JDBC, que um conjunto de classes e interfaces escritas em Java que faz o envio de instrues SQL (Structured Query Language) para qualquer banco de dados relacional. Para cada banco de dados h um driver JDBC especfico. Em Java, o driver carregado na memria por meio da sintaxe Class.forName(nome-do-driver-a-ser-carregado). Por exemplo: No Oracle Class.forName(oracle.jdbc.driver.OracleDriver); No MySQL Class.forName(com.mysql.jdbc.Driver); No Postgre Class.forName(org.postgresql.Driver);

2. ESTABELECENDO CONEXO COM O BANCO DE DADOS Para se estabelecer uma conexo com o banco de dados necessrio: 1. Criao do banco de dados. 2. Definio do driver a ser usado para a conexo ao banco de dados e do endereo (URL) de sua localizao. o Muitas vezes necessrio baixar o driver de um site da Internet e adicionar o caminho desse driver varivel de ambiente CLASSPATH. 3. Criao da aplicao Java. No exemplo a seguir ser mostrado como feito para carregar o driver e realizar a conexo com o banco de dados.
Profa. Myrna Amorim

Linguagem de Programao IV JDBC

import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import javax.swing.JOptionPane; public class Exemplo1_BD { static final String JDBC_DRIVER = "oracle.jdbc.driver.OracleDriver"; static final String DATABASE_URL = "jdbc:oracle:thin:@localhost:1521:xe"; public static void main (String[] args) { try { // carrega classe de driver do banco de dados Class.forName(JDBC_DRIVER); // estabelece conexo com o banco de dados Connection conn = DriverManager.getConnection (DATABASE_URL, "login", "senha"); JOptionPane.showMessageDialog(null, "Conexo realizada com sucesso!"); conn.close(); } catch (ClassNotFoundException erro) { JOptionPane.showMessageDialog(null, "Driver de conexo no encontrado."); } catch (SQLException erro) { JOptionPane.showMessageDialog(null, "Erro na conexo com o banco."); } } }

import java.sql.* importa as classes do pacote sql, necessrias criao da conexo e manipulao do banco de dados por meio dos comandos SQL. JDBC_DRIVER constante que contm o nome do driver utilizado para a conexo ao banco de dados. DATABASE_URL constante que contm o endereo da localizao do banco. Essa URL pode variar em funo do banco de dados usado. Tambm pode conter diversos argumentos diferentes como, por exemplo, nome do driver, caminho e nome do banco de dados, porta de comunicao, login e senha para acesso ao banco. Ex.: jdbc:mysql://localhost:3306/biblioteca Class.forName (JDBC_DRIVER) usado para carregar o driver.
Profa. Myrna Amorim

Linguagem de Programao IV JDBC

forName um mtodo static da classe Class para carregar a classe para o driver de banco de dados. Essa linha lana uma exceo verificada do tipo java.lang.ClassNotFoundException se o carregador de classe no puder localizar a classe de driver. Connection conn = DriverManager.getConnection(URL, "login", "senha") usado para efetuar a conexo com o banco de dados. O objeto conn implementa a interface Connection que gerencia a conexo entre o programa Java e o banco de dados. Na realidade, cada driver existente no mercado, uma classe que implementa mtodos da interface Connection. Connection

"Driver"

A aplicao inicializa conn com o resultado de uma chamada para o mtodo static getConnection da classe DriverManager (pacote java.sql), que tenta conectar-se ao banco de dados especificado por sua URL. O mtodo getConnection aceita trs argumentos uma String que especifica a URL de banco de dados, uma String que especifica o nome de usurio e uma String que especifica a senha. A URL localiza o banco de dados (possivelmente em uma rede ou no sistema de arquivos local do computador). A URL jdbc:mysql://localhost/empregados especifica o protocolo de comunicao (jdbc), o subprotocolo de comunicao (mysql) e a localizao do banco de dados //localhost/empregados (@dcp:nmero da porta:nomedoBancoDados). O nmero da porta do MySQL 3306 (do Oracle 1521 e do Postgree 5432). Se DriverManager no conseguir se conectar ao banco de dados, o mtodo getConnection gera uma SQLException (pacote java.sql).

Profa. Myrna Amorim

Linguagem de Programao IV JDBC

3. SQL Uma maneira de acessar um banco de dados em Java por meio da SQL linguagem padro internacional empregada quase universalmente com bancos de dados relacionais para realizar consultas solicitar informaes que satisfazem determinados critrios e manipular dados. O quadro a seguir mostra algumas das principais palavras-chave de SQL. Palavra-chave SELECT FROM WHERE GROUP BY ORDER BY INNER JOIN INSERT UPDATE DELETE Descrio Recupera dados de uma ou mais tabelas. Tabelas envolvidas na consulta. Requeridas em cada SELECT. Critrios de seleo que determinam as linhas a ser recuperadas, excludas ou atualizadas. Opcional em uma consulta ou uma instruo SQL. Critrios para agrupar linhas. Opcional em uma consulta SELECT. Critrios para ordenar linhas. Opcional em uma consulta SELECT. Mescla linhas de mltiplas tabelas. Insere linhas em uma tabela especfica. Atualiza linhas em uma tabela especfica. Exclui linhas de uma determinada tabela.

Exemplo: Considere as duas tabelas abaixo e verifique as sintaxes das palavras-chave SQL a seguir. livro num titulo autor qtde usuario cpf nome sexo telefone livroEmprestado numLivro

Comandos SELECT sintaxe: SELECT * FROM nomeDaTabela * indica que todas as colunas da tabela nomeDaTabela devem ser recuperadas. Exemplo: SELECT num, titulo FROM livro

Profa. Myrna Amorim

Linguagem de Programao IV JDBC

WHERE sintaxe: SELECT nomeDaColuna1,..., nomeDaColunaN FROM nomeDaTabela WHERE critrios Exemplo: SELECT titulo, num, qtde FROM livro WHERE num = 8586 Os critrios da clusula WHERE pode conter os operadores relacionais (<, >, <=, >=, =) e o operador LIKE (verificar a documentao do sistema de banco de dados cuidadosamente para determinar se o sistemas suporta esse operador). SELECT titulo, num, qtde FROM livro WHERE titulo LIKE 'M%' SELECT titulo, num, qtde FROM livro WHERE titulo LIKE '_X%'

(%) procura strings que tenham zero ou mais caracteres na posio do caractere porcentagem. ( _ ) ou (?) indica um nico caractere nessa posio.

ORDER BY sintaxe:
SELECT nomeDaColuna1,..., nomeDaColunaN FROM nomeDaTabela ORDER BY coluna ASC SELECT nomeDaColuna1,..., nomeDaColunaN FROM nomeDaTabela ORDER BY coluna DESC

ASC ordem crescente (opcional) e DESC ordem decrescente. Exemplo: SELECT titulo, autor FROM livro ORDER BY titulo ASC SELECT nome, telefone FROM usuario ORDER BY nome DESC

SELECT titulo, autor FROM livro ORDER BY autor, titulo


Profa. Myrna Amorim

SELECT nome, telefone FROM usuario WHERE nome LIKE 'B%' ORDER BY cpf

Linguagem de Programao IV JDBC

INNER JOIN sintaxe: SELECT nomeDaColuna1,..., nomeDaColunaN FROM tabela1 INNER JOIN tabela2 ON tabela1.nomeDaColuna = tabela2.nomeDaColuna Exemplo: SELECT cpf, nome FROM usuario INNER JOIN livro ON usuario.numLivro = livro.num ORDER BY nome

INSERT sintaxe: INSERT INTO nomeDaTabela (nomeDaColuna1, nomeDaColuna2, ..., nomeDaColunaN) VALUES (valor1, valor2, ..., valorN) Exemplo: INSERT INTO livro (titulo, autor, qtde) VALUES ('Introducao a Programacao Orientada a Objetos com Java','Rafael Santos',10);

UPDATE sintaxe: UPDATE nomeDaTabela SET nomeDaColuna1 = valor1, ..., nomeDaColunaN = valorN WHERE critrios Exemplo: UPDATE usuario SET telefone = 22222222 WHERE telefone = 44444444 AND nome = 'Ana'

Profa. Myrna Amorim

Linguagem de Programao IV JDBC

DELETE sintaxe: DELETE FROM nomeDaTabela WHERE critrios Exemplo: DELETE FROM livro WHERE num = 123 DELETE FROM usuario WHERE cpf = 5678

Profa. Myrna Amorim

You might also like