Acesso a Banco Programação Orientada a Objetos Profa. Cristiane e Prof. Daniel As conexões em Java são feitas através de uma ponte que implementa todas as funcionalidades que um banco de dados padrão deve nos fornecer. Por exemplo, toda conexão deve permitir executar código de atualização, pesquisa, etc. Veja no esquema ao lado a ponte (implementação) entre o programa (cliente) e o banco de dados.
JDBC: Java Database Connectivity O JDBC é um conjunto de classes e interfaces ( API ) escritas em Java para execução e manipulação de resultados de instruções SQL para qualquer banco de dados relacional. Para cada Banco de dados há um driver JDBC. O primeiro passo é adicionar a implementação ao classpath: o arquivo jar contendo a implementação do mysql, sqlserver ou outro banco de dados. Este arquivo jar precisa ser colocado em um lugar visível ou adicionado à variável de ambiente classpath. No caso do NetBeans, adicionamos à biblioteca. Ainda falta registrar o driver do banco de dados no sistema. Para isso basta carregá-lo através do método Class.forName(). O serviço de encontrar uma ponte, ou seja, um driver certo é delegado para um controlador de drivers. Um gerente de drivers. Nada mais normal que ele se chame DriverManager. Através dele, é possível chamar um método getconnection com uma url que indica qual o banco que desejo abrir. O padrão da url para o driver do mysql é: jdbc:mysql://ip/banco Devemos substituir ip pelo ip da máquina e banco pelo nome do banco a ser utilizado.
import java.sql.*; public class ConnectionFactory public ConnectionFactory() Exemplo public static Connection getconnection() throws ClassNotFoundException, SQLException // Carrega o driver (classes de conexão) especificas do MySql na Virtual Machine do Java // Sem as classes o java não conecta no banco de dados. // cada banco de dados tem seu próprio driver Class.forName("com.mysql.jdbc.Driver"); // Criando uma conexão com seu banco de dados return DriverManager.getConnection("jdbc:mysql://localhost/em ployee", "root",""); Exemplo
Vamos implementar a classe: public void inserirchefe(chefe chefe) String sql = "INSERT INTO EMPREGADO (" + "NRMATRICULA, NOME, SOBRENOME, SALARIO, TIPO_EMPREGADO) VALUES " + "(?,?,?,?,'C')"; try this.conexao = ConnectionFactory.getConnection(); comandosql = conexao.preparestatement(sql); comandosql.setint(1, chefe.getmatricula()); comandosql.setstring(2, chefe.getnome()); comandosql.setstring(3, chefe.getsobrenome()); comandosql.setdouble(4, chefe.getrendimento()); comandosql.execute(); comandosql.close(); this.conexao.close(); catch (SQLException ex) catch (ClassNotFoundException ex) Tratamento de erros Visão geral Gerenciamento de erros com Exceções em Java O que é uma exceção? O termo exceção é uma contração da frase evento excepcional Uma exceção é um evento que ocorre durante a execução de um programa que interfere no fluxo normal das instruções deste programa
Exceção Muitos tipos de erros podem causar uma exceção, como por exemplo: tentar acessar um array fora de seus limites, tentar abrir um arquivo inexistente, uma falha geral no disco, tentar abrir uma URL inexistente, tentar dividir por zero, tentar calcular a raiz quadrada de um número inexistente etc. Exceções Quando tal erro ocorre dentro de um método, este cria um objeto da classe Exception e passa este objeto para o sistema de runtime. Este objeto contém informações sobre a exceção, incluindo, por exemplo, seu tipo e o estado do programa quando o erro ocorreu Palavras chave Java para o tratamento de exceções: try catch throw throws finally
Sem tratamento de Exceção class Teste01 public static void main (String args[]) int i = 1, j = 0, k; k = i/j; /* causa o erro: Exception in thread "main" java.lang.arithmeticexception: / by zero at Teste01.main(Teste01.java:6) quando da execução do programa, que termina abruptamente */ Com tratamento de Exceção class Teste01 public static void main (String args[]) int i = 1, j = 0, k; try k = i/j; catch (ArithmeticException e) System.out.println( Xiii..."); System.out.println(e); Com tratamento de Exceção public static Connection getconnection() throws ClassNotFoundException, SQLException // comandos Com tratamento de Exceção try this.conexao = ConnectionFactory.getConnection(); // lança exceção comandosql = conexao.preparestatement(sql); comandosql.setint(1, chefe.getmatricula()); comandosql.setstring(2, chefe.getnome()); comandosql.setstring(3, chefe.getsobrenome()); comandosql.setdouble(4, chefe.getrendimento()); comandosql.execute(); comandosql.close(); this.conexao.close(); catch (SQLException ex) catch (ClassNotFoundException ex)