Prévia do material em texto
Este módulo aborda a conexão e instruções de acesso a banco de dados. Um banco de dados, grosso modo, é um conjunto de informações organizadas de forma regular, em tabelas semelhantes a matrizes de duas dimensões (linhas e colunas) que contém os dados. Existem diversos modelos de bancos de dados, os quais vão desde mais simples, o qual corresponde à uma tabela ou matriz bidimensional como a descrita anteriormente, até um modelo de banco de dados em rede, em que várias tabelas estão interligadas por apontadores que, em dadas posições da tabela, fazem a interligação de uma tabela com outra e o banco de dados relacional que contém tabelas de dados propriamente ditos e tabelas que exprimem a relação entre os dados. Assim, banco de dados refere-se à coleção dos dados relacionados e as relações que os suportam. software utilizado para acessar dados são chamados aplicativos de banco de dados, dentre os quais pode-se destacar Oracle, SQLServer, MySQL, Informix, Sybase, PostgreSQL. O aplicativo de banco de dados é freqüentemente também chamado de Sistema Gerenciador de Banco de Dados (SGBD) e encarrega-se das operações que o usuário pode realizar nas tabelas de dados do banco. Como a proposta da linguagem Java é ser multiplataforma, há uma API (Application Programming Interface Interface de Programação de Aplicações) com classes especiais para que qualquer banco de dados possa ser acessado e que isso possa ser implementado em qualquer plataforma, mantendo-se o lema "Compile uma vez e rode em qualquer lugar". JDBC: JAVA DATASE CONNECTIVITY Biblioteca de classes Java para acesso a banco de dados. Ela possui um conjunto de interfaces que criam um ambiente comum em que as aplicações e os mecanismos de banco de dados se comunicam. A consulta em linguagem SQL é passada ao aplicativo de banco de dados como um parâmetro de um método e a resposta retorna ao programa Java como um objeto. A JDBC oferece também a conversão de tipos de dados do banco de dados nos tipos nativos correspondentes em Java. Os problemas de acesso são tratados como exceções. Aplicativo JDBC Java SGBD acesso de um programa Java a um banco de dados se dá pela classe DriverManager que pertence ao pacote java.sql e que seleciona o driver apropriado para banco de dados que se pretende conectar.A Microsoft possui uma API para conexão de banco de dados para Windows, chamada ODBC, na qual usuário deve registrar seu banco de dados, pois essa API encontra driver adequado para estabelecer a ligação entre um aplicativo e o SGBD. A Sun desenvolveu uma API que estabelece uma ligação entre esses aplicativos e programa Java, chamada de ponte JDBC:ODBC. Essa interface permite que um programa Java, rodando sob uma máquina virtual, comunique-se com um banco de dados. A classe DriverManager vai tentar estabelecer uma ligação com banco de dados pelo método getConnection( String Url Connection Conexao = DriverManager.getConnection(Url); Na String Url está definido o nome do driver de bando de dados e o nome do banco que será usado pelo método getConnection( ) da classe DriverManager. método forName( ) da classe Class retorna o driver JDBC:ODBC que será usado e desta forma fica estabelecida a ligação ou conexão entre o programa e o banco de dados. Neste processo podem ocorrer erros por se tratar de uma ligação entre dois softwares diferentes. Neste caso essa operação deve ser envolvida por um laço try-catch que lança exceções de dois tipos: ClassNotFoundException Quando sistema não consegue localizar driver indicado. SQLException Quando o driver foi achado, mas o banco de dados retorna algum tipo de erro. Para efetuar uma consulta ampla à tabela, deve-se criar um objeto Statement (relato, relatório, declaração ou extrato). Por meio do objeto MeuState do tipo Statement é pedido que seja criado um extrato do banco de dados por: Statement MeuState = ); objeto Conexao chama método createStatement( ) da classe DriverManager à qual pertence. É criado também um objeto chamado apenas de rs da classe ResultSet em que serão efetuadas as consultas ao relatório MeuState e ficarão acumuladas as respectivas respostas, pelos métodos de ResultSet. String SQL = "SELECT * FROM produtos";rs = MeuState.executeQuery(SQL); rs.next(); Val = rs.getString("codigo"); método executeQuery( ) que pertence à classe Statement envia a consulta por seu parâmetro representado pelo conteúdo da string SQL. Na terceira linha o método de rs qual posiciona a leitura do relatório na primeira linha da tabela produtos. Como padrão, o cursor de pesquisa em uma tabela é posicionado antes da sua primeira linha. método next() manda cursor avançar para a próxima linha em relação à linha atual. Isso faz com que a primeira leitura da tabela seja a sua primeira linha. método getString() recebe valor da coluna desejada que retornou do ResultSet e que agora pode ser manipulada por uma variável. Para inserir um valor na tabela devemos modificar a instrução SQL e método executeUpdate( ) que pertence à classe Statement envia a atualização por seu parâmetro representado pelo conteúdo da string SQL. String SQL = "INSERT INTO produtos (codigo,produto,preço) VALUES ('0001', 'Sabão em '5.45' )"; rs = Para excluir um valor na tabela devemos modificar a instrução, é muito importante lembrar da cláusula where que condiciona que será excluído. String SQL = "DELETE FROM produtos WHERE codigo rs = MeuState.executeUpdate(SQL); Para alterar um valor na tabela devemos modificar a instrução, sendo necessário lembrar da cláusula where que condiciona o que será alterado. método executeUpdate( ) envia a atualização dos atributos representados pela "?" por seu respectivo parâmetro da string SQL. String SQL = "UPDATE produtos SET produto =? WHERE codigo =?"; "Sabonete"); rs.setString(2, "0001"); rs.executeUpdate();Exercício 1: Na API JDBC (Java Database Connectivity), valor retornado pelo método executeQuery da interface java.sql.Statement é uma referência a uma instância da classe: A) ResultList; B) ResultMap; C) ResultCollection; D) RowSet; E) ResultSetExercício 2: Uma interface de baixo nível Java, que permite aplicações Java interagirem com bancos de dados. Trata-se de uma API independente de fornecedor denominada. A) LDBC B) JVM. C) SQLJ. D) JDBC. E) ODBC. Exercício 3: No Java, a classe DriverManager fornece os serviços básicos para gerenciamento de drivers JDBC. Quais três argumentos normalmente são passados como parâmetros em seu método getConnection? A) String url, String user e String password. B) String url, String port e String database.C) String url, String user e String database. D) String user, String port e String database. E) String user, String password e String database.