Professional Documents
Culture Documents
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
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
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).
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
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 nome, telefone FROM usuario WHERE nome LIKE 'B%' ORDER BY cpf
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'
DELETE sintaxe: DELETE FROM nomeDaTabela WHERE critrios Exemplo: DELETE FROM livro WHERE num = 123 DELETE FROM usuario WHERE cpf = 5678