Acesso a Base de Dados JDBC Trabalho Realizado por: Diogo Reis, 1010481 INTRODUÇÃO JDBC (Java DataBase Conectivity) é uma API Java que fornece classes e interfaces para acesso e tratamento de dados. Camada de abstracção que permite a um programa Java utilizar uma interface padrão para acesso a uma base de dados relacional através da linguagem SQL. INTRODUÇÃO • A API JDBC cria como padrão: – O mecanismo de como deve ser feita a ligação à Base de Dados – Abordagem para criar consulta – Resultado da consulta • A API JDBC não cria como padrão: – Sintaxe SQL • API localizada no pacote java.sql INTRODUÇÃO JDBC consiste em duas partes: – API JDBC, puramente escrita em Java. – Gestor de Driver JDBC, o qual comunica com os drivers dos vendedores da BD. JDBC DRIVERS São o coração do JDBC. Há quatro tipos de drivers: – – – – TIPO 1 – JDBC-ODBC TIPO 2 – JDBC – JAVA PARTIAL DRIVER TIPO 3 – PURE-JAVA JDBC DRIVER TIPO 4 – PURE-JAVA JDBC DRIVER TIPOS DE DRIVERS TIPO 1 – Utilizado para fazer a ligação (“ponte”) entre o JDBC e um driver ODBC. TIPO 2 – Converte chamadas JDBC em chamadas internas da API do cliente da base de dados. TIPO 3 – A API do JDBC acede a uma aplicação intermediária (middleware) encarregada de traduzir chamadas JDBC e enviá-las à base de dados. TIPO 4 – Este driver converte as chamadas JDBC directamente para o protocolo nativo do SGBD. ODBC ODBC (Open Database Connectivity) é uma API construída em C para aceder a base de dados. ODBC não é uma API independente de plataforma, sendo patrocinado pela Microsoft. A API JDBC oferece um driver específico para o padrão ODBC. VANTAGENS JDBC Um programa Java utiliza uma API JDBC única que é independente da base de dados ou driver que estiver a utilizar. Os drivers para conexão e acesso às principais base de dados existentes são fornecidos pelos seus fabricantes. O programador só precisa de saber utilizar o driver adequado e a API JDBC. PRINCIPAIS CLASSES E INTERFACES JDBC DriverManager Connection Statement PreparedStatement CallableStatement ResultSet SQLException DRIVERMANAGER Utilizado para estabelecer uma conexão entre o driver apropriado e a Base de Dados. Métodos public static Connection getConnection (String url) throws SQLException – Inicia uma conexão à base de dados e retorna um objecto Connection. CONNECTION Representa uma conexão com uma BD específica – – – comandos SQL são executados e os resultados são retornados aspectos das transacções são tratados (commit,etc) descrição da BD pode ser obtida (metadados) • Métodos public Statement createStatement() throws SQLException – - Cria um objeto com uma instrução SQL para execução futura. CONNECTION Métodos – public void close() throws SQLException - – public void commit() throws SQLException - – Fecha a conexão actual. Confirma a transacção. public void rollback() throws SQLException - Cancela a transacção. STATEMENT Utilizado para enviar comandos SQL simples • Métodos public ResultSet executeQuery (String sql) throws SQLException - Executa a consulta SQL passada em SQL e retorna o ResultSet com o resultado da consulta. public int executeQuery(String sql) throws SQLException - Executa a instrução INSERT, UPDATE ou DELETE especificada em SQL. public void cancel() throws SQLException - Cancela uma instrução SQL que esteja a ser executada. PREPAREDSTATEMENT Utilizado para enviar comandos SQL que recebam um ou mais parâmetros como entrada • Métodos public ResultSet executeQuery (String sql) throws SQLException - Executa a consulta SQL passada em SQL e retorna o ResultSet com o resultado da consulta. public int executeUpdate() throws SQLException – Usado para efectuar actualizações numa base de dados como a criação de tabelas (CREATE), alterações (UPDATE) ou exclusão (DELETE) de registros, etc. public setInt(int indice, int valor) public setBoolean(int indice, boolean valor) – Usado para configurar os parâmetros dum código SQL. CALLABLESTATEMENT Utilizado para chamar stored procedures na Base de Dados. • Métodos – public CallableStatement prepareCall (String storedProcedure) throws SQLException - Executa a stored procedured armazenada na Base de Dados. SETE PASSOS BÁSICOS PARA USAR O JDBC 1. Carregar o driver 2. Definir a URL de Conexão 3. Estabelecer a Conexão 4. Criar um objecto Statement 5. Executar a Consulta 6. Processar os Resultados 7. Fechar a Conexão SETE PASSOS BÁSICOS PARA USAR O JDBC 1. Carregar o driver try {Class.forName("sun.jdbc.odbc.JdbcOdbcDriver "); } catch(ClassNotFoundException e) {...} 2. Definir a URL de Conexão String odbcURL = "jdbc:odbc:Java"; 3. Estabelecer a conexão String user= “abc”; String password = “secret”; Connection connection=DriverManager.getConnection(odbcURL,user,password); 4. Criar um objecto Statement Statement statement =connection.createStatement(); 5. Executar a Consulta: String query = “SELECT col1, col2, col3 FROM sometable”; ResultSet resultSet = statement.executeQuery(query); SETE PASSOS BÁSICOS PARA USAR O JDBC 6. Processar os Resultados while(resultSet.next()) { System.out.println(resultSet.getString(1)+ “” + resultSet.getString(2)+ “” + resultSet.getString(3)); – A primeira coluna tem índice 1, não 0; 7. Fechar a Conexão connection.close(); – - Abrir e fechar conexão é um recurso que consome muito da máquina; EXEMPLO EXEMPLO Passos para configurar ODBC no Windows: Seleccionar Painel de Controlo – Ferramentas Administrativas Seleccionar “Fonte de Dados – ODBC” EXEMPLO Criar um DNS através da fonte de dados ODBC Adicionar - Microsoft Acess Driver – Concluir EXEMPLO • Nome da ligação ODBC - JavaJdbc • Seleccionar BD - ...\jdbc.mdb APLICAÇÃO JAVA APLICAÇÃO JAVA - JDBC APLICAÇÃO JAVA APLICAÇÃO JAVA - JDBC APLICAÇÃO JAVA APLICAÇÃO JAVA - JDBC APLICAÇÃO JAVA APLICAÇÃO JAVA - JDBC Resultado Conclusão Esta apresentação serve principalmente para ficarmos com uma pequena ideia de qual a finalidade e meios de implementação de uma ligação a Base de Dados em Java através da JDBC. De ter em atenção que nesta apresentação foram especificados, como devem imaginar, apenas alguns dos métodos e interfaces da JDBC. Bibliografia e Links úteis http://java.sun.com/products/jdbc/ http://www.imasters.com.br/artigo.php?cn=1020&cc=89 http://jdbcmanager.sourceforge.net/ http://www.mhavila.com.br/link/prog/java/java-api.html http://www.inf.furb.br/~jomi/java/pdf/jdbc.pdf http://java.sun.com/products/jdbc/learning.html http://www.dimap.ufrn.br/~jorge/MySW/jdbc/threetier/Slides/index.htm