Acessando bancos de dados com o JDBC



Documentos relacionados
Banco de Dados. Prof. Leonardo Barreto Campos 1

Laboratório de Banco de Dados Aula 1 Acesso a Banco de Dados. Prof. Josenildo Silva jcsilva@ifma.edu.br

Aula 1 Acesso a Banco de Dados

Programação com Acesso a Banco de Dados

Manipulação de Banco de Dados com Java. Ms. Bruno Crestani Calegaro Maio/ 2015

Banco de Dados. Banco de Dados. Alcides Pamplona Alcides Pamplona Linguagem de Programação CESBD 2010

Integrando Java com Banco de Dados

Acesso a Bancos de Dados em Java (JDBC)

Programação Orientada a Objetos JDBC Java Database Connectivity

JDBC (Java Database Connectivity) Padrão de Projeto DAO (Data Access Object) Roteiro para instalação do banco de dados e do driver JDBC

Java & Bancos de Dados Adaptado de Slides da Universidade Salgado de Oliveira Goiânia

JAVA JDBC COMO FUNCIONA. Programação Orientada a Objetos Flávio de Oliveira Silva 315. Programação Orientada a Objetos Flávio de Oliveira Silva 316

JDBC Java Database Connectivity

Programação Orientada a Objetos (DPADF 0063)

Acesso a Bancos de Dados (JDBC) Autor: Cleyton Maciel (clayton.maciel@ifrn.edu.br) Adaptação: Pedro Baesse (pedro.baesse@ifrn.edu.

JAVA JDBC Java Database Connectivity

JDBC (Fundamentos) Sang Shin Java Technology Architect Sun Microsystems, Inc.

JDBC Acessando Banco de Dados

Java JDBC - I. Ex. 2: para o SQLServer da Microsoft, o driver JDBC pode ser obtido em

Figura 1. A Classe Java

Leonardo Gresta Paulino Murta

INTRODUÇÃO. No entanto, o que pode ser considerado um produto (resultado) da criação de BDs?

Fernando Freitas Costa. Pós-Graduando em Gestão e Docência Universitária. blog.fimes.edu.br/fernando nando@fimes.edu.br

Desenvolvimento Web TCC Turma A-1

Manipulação de Banco de Dados com Java 1. Objetivos

Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL

PadrãoIX. Módulo II JAVA. Marcio de Carvalho Victorino. JDBC - Java Database Connectivity A,L,F,M

Capítulo 1. Acesso a Banco de Dados com JDBC (Java Database Connectivity) e o Padrão de Projeto DAO (Data Access Object)

Curso de Java. Acesso a banco de dados através de JDBC. Todos os direitos reservados Klais

Java e Conexão com Banco de Dados

Orientação a Objetos

Java na WEB Banco de Dados

Persistência de Classes em Tabelas de Banco de Dados

Java Básico JDBC. Razer Anthom Nizer Rojas Montaño Banco de Dados: JDBC

Acesso a Banco. Conexão em Java. Conexão em Java. Programação Orientada a Objetos Profa. Cristiane e Prof. Daniel

DSS 09/10. DSS 09/10 Que métodos é que fazem parte de cada camada? Aplicações Multi-camada JDBC. Aula 3 DSS 09/10

Acesso a Bancos de Dados (JDBC) Desenvolvimento de Aplicações em Java O QUE É JDBC JAVA E JDBC CARACTERÍSTICAS DE JDBC

Desenvolvimento de Sistemas de Informação

JDBC. Prof. Márcio Bueno

JDBC. Java DataBase Connectivity

Programação WEB (JSP + Banco Dados) Eng. Computação Prof. Rodrigo Rocha

DSS 08/09. Camada de Dados - JDBC. Aula 1. António Nestor Ribeiro /António Ramires Fernandes/ José Creissac Campos {anr,arf,jfc}@di.uminho.

Android e Bancos de Dados

(UFF) JDBC (I) TEPIS II

Java 2 Standard Edition Fundamentos de

Programação com Acesso a BD. Programação com OO Acesso em Java

Controle de transações em SQL

Fundamentos dos Sistemas de Informação Organização de Dados e Informações

Conectividade de Banco de Dados Java JDBC

JDBC. Siga as instruções para instalar o banco de dados H2 e criar a tabela Alunos.

Banco de Dados I. Introdução. Fabricio Breve

CRIANDO, ALTERADO E EXCLUINDO TABELAS, INSERINDO, SELECIONANDO, ALTERANDO E EXCLUINDO DADOS

Curso de Java Módulo III JDBC Fábio Mengue Centro de Computação - Unicamp

? O SQL SERVER é um sistema de gerenciamento de banco de dados relacional que foi desenvolvido inicialmente pela Microsoft em parceria com a Sybase.

Noções de. Microsoft SQL Server. Microsoft SQL Server

Acessando dados em Java com JDBC

Banco de Dados Oracle. Faculdade Pernambucana - FAPE

PROGRAMAÇÃO SERVIDOR MIDDLEWARE JDBC: USANDO O JAVA DB EM SISTEMAS WEB. Prof. Dr. Daniel Caetano

Programação em Rede JDBC

JPA: Persistência padronizada em Java

Banco de Dados. Sérgio Luiz Ruivace Cerqueira

*O RDBMS Oracle é um sistema de gerenciamento de banco de dados relacional.

No cabeçalho de cada arquivo Java onde haverá acesso a banco de dados, o seguinte Import deve ser colocado:

MODELO DE DADOS VS ESQUEMA

Desenvolvimento de Aplicações para Internet Aula 9

UFG - Instituto de Informática

Linguagens de Programação

Softwares Aplicativos Banco de Dados

Acesso a banco de dados

Introdução à Banco de Dados. Definição

O cursor se torna vermelho e uma Paleta de Edição contendo as instruções mais utilizadas é apresentada.

Treinamento. DBA Oracle 11g. Duração: 120 horas

Prática Sobre Servlets e JSP

Introdução ao PHP. Prof. Késsia Marchi

Desenvolvendo Aplicações Web com NetBeans

Prof. Marcelo Heitor Teixeira marceloheitor.com. Java API JDBC

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula 09a- Acessando os dados através JDBC

SQL Linguagem de Definição de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

SQL APOSTILA INTRODUÇÃO A LINGUAGEM SQL


Curso de Aprendizado Industrial Desenvolvedor WEB

Sistemas de Banco de Dados Aspectos Gerais de Banco de Dados

Front-End Uso da Linguagem Turbo Delphi para Acesso ao Banco de Dados Mysql

CAPÍTULO 8 Conexões de banco de dados para programadores ASP.NET

SGBD ITB 1.INTRODUÇÃO 1.INTRODUÇÃO Conceito SGBD: Sistema gerenciador de banco de dados Constituição SGBD

Iniciando o MySQL Query Brower

Bancos de dados distribuídos Prof. Tiago Eugenio de Melo

Introdução a Banco de Dados

Acessando um Banco de Dados

Dado: Fatos conhecidos que podem ser registrados e têm um significado implícito. Banco de Dados:

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Java Beans e Servlets

Desenvolvimento Web com Struts

Prevayler. Perola. André Luís Sales de Moraes Juliana Keiko Yamaguchi Tatiana Yuka Takaki

MODELAGEM DE DADOS MODELAGEM DE DADOS. rafaeldiasribeiro.com.br 04/08/2012. Aula 7. Prof. Rafael Dias Ribeiro.

Transcrição:

Acessando bancos de dados com o JDBC Notas de Aula: Java Como Programar, 8/E Prof. Geraldo Braz Junior

Introdução Um banco de dados é uma coleção organizada de dados. Um sistema de gerenciamento de bancos de dados - SGBD fornece mecanismos para armazenar, organizar, recuperar e modificar dados para muitos usuários. SQL é a linguagem padrão internacional utilizada quase universalmente com bancos de dados relacionais para realizar consultas e para manipular dados. Microsoft SQL Server Oracle Sybase IBM DB2 Informix PostgreSQL MySQL O JDK vem agora com um RDBMS puro Java chamado Java DB a versão da Sun para o Apache Derby. 2

Introdução Os programas Java comunicam-se com bancos de dados e manipulam seus dados utilizando a Java Database Connectivity (JDBC ) API. Um driver JDBC permite aos aplicativos Java conectar-se a um banco de dados em um DBMS particular e permite a você manipular esse banco de dados utilizando o JDBC API. 3

Banco de dados books O banco de dados consiste em três tabelas: Authors AuthorISBN Titles. Chave estrangeira uma coluna em uma tabela que corresponde à coluna de chave primária em outra tabela. A chave estrangeira ajuda a manter a Regra de Integridade Referencial cada valor de chave estrangeira deve aparecer como outro valor de chave primária da tabela. Há um relacionamento um para muitos entre uma chave primária e sua chave estrangeira correspondente. 4

5 Modelo ER

6 SQL

Manipulando bancos de dados com o JDBC O programa ilustra a conexão com o banco de dados, consultando o banco de dados e processando o resultado. 7

8

9

10 Resultado

Consultando e conectando-se a um banco de dados O URL do banco de dados identifica o nome do banco de dados ao qual se conectar, bem como informações sobre o protocolo utilizado pelo driver JDBC. O JDBC 4.0 suporta a descoberta de driver automática. Para assegurar que o programa pode localizar a classe de driver do banco de dados, você deve incluir a localização da classe no classpath do programa ao executar o programa. Para o MySQL inclua o arquivo mysql-connectorjava-5.1.7-bin.jar no classpath do programa, como em: java -classpath.;c:\mysql-connector-java- 5.1.7\mysql-connector-java-5.1.7- bin.jar DisplayAuthors 11

12 Connection Um objeto que implementa a interface Connection gerencia a conexão entre o programa Java e o banco de dados. Os objetos Connection permitem que os programas criem instruções SQL que manipulam banco de dados. O método DriverManager static getconnection tenta se conectar ao banco de dados especificado pelo seu URL. Três argumentos: uma String que especifica o URL do banco de dados. uma String que especifica o nome de usuário uma String que especifica a senha do usuário.

URL de conexão O URL jdbc:mysql://localhost/books especifica: o protocolo de comunicação (jdbc). o subprotocolo para comunicação (mysql). a localização do banco de dados (//localhost/books, onde localhost é o host executando o servidor MySQL ebooks é o nome do banco de dados). O subprotocolo mysql indica que o programa utiliza um subprotocolo específico ao MySQL para conectar-se ao banco de dados MySQL. 13

14 Por SGDB...

Statement e ResultSet O método Connection.createStatement obtém um objeto que implementa a interface Statement (pacote java.sql). Usado para enviar instruções SQL para o banco de dados. O método executequery do objeto Statement envia uma consulta para o banco de dados. Retorna um objeto que implementa a interface ResultSet e contém os resultados da consulta. Os métodos ResultSet permitem que programa manipule o resultado da consulta. O ResultSetMetaData de um ResultSet descreve o conteúdo do ResultSet. Pode ser usado programaticamente para obter informações sobre nomes de coluna e tipos do ResultSet. O método ResultSetMetaData getcolumncount recupera o número de colunas no ResultSet. 15

ResultSet A primeira chamada para o método ResultSet next posiciona o cursor ResultSet para a primeira linha. Retorna o valor boolean true se for capaz de se posicionar na próxima linha; caso contrário, o método retorna false. O método ResultSetMetaData getcolumntype retorna um inteiro constante da classe Types (pacote java.sql) que indica o tipo de uma coluna especificada. Os métodos ResultSet get em geral recebem como um argumento um número de coluna (como um int) ou um nome de coluna (como uma String) indicando que valor da coluna obter. O método ResultSet getobject retorna um valor de coluna como um Object. 16

17 Dicas

ResultSetMetaData O método ResultSetMetaData getcolumnclassname obtém o nome de classe completamente qualificado da coluna especificada. getcolumncount obtém o número de colunas no ResultSet. getcolumnname obtém o nome da coluna no ResultSet. absolute posiciona o cursor ResultSet em uma linha específica. last posiciona o cursor ResultSet na última linha no ResultSet. getrow obtém o número da linha atual no ResultSet. 20

21 Interface RowSet A interface RowSet fornece vários métodos set que permite especificar as propriedades necessárias para estabelecer uma conexão e criar uma Statement. RowSet também fornece vários métodos get que retornam essas propriedades. Dois tipos de objetos RowSet conectado e desconectado. Um objeto RowSet conectado conecta-se ao banco de dados uma vez e permanece conectado enquanto o objeto estiver em uso. Um objeto RowSet desconectado conecta-se ao banco de dados, executa uma consulta para recuperar os dados do banco de dados e depois fecha a conexão. Um programa pode alterar os dados em um RowSet desconectado enquanto ele estiver desconectado. Dados modificados podem ser atualizados no banco de dados depois que um RowSet desconectado restabelecer a conexão com o banco de dados.

Interface RowSet O pacote javax.sql.rowset contém duas subinterfaces de RowSet JdbcRowSet e CachedRowSet. JdbcRowSet, um RowSet conectado, atua como um empacotador em torno de um objeto ResultSet e permite aos programadores percorrer e atualizar as linhas no ResultSet. Um objeto JdbcRowSet é rolável e atualizável por padrão. CachedRowSet, um RowSet desconectado, armazena os dados em cache de um ResultSet na memória e desconecta-se do banco de dados. Um objeto CachedRowSet é rolável e atualizável por padrão. Também serializável, então ele pode ser passado entre aplicativos Java por uma rede, como a Internet. 22

23 Exemplo RowSet

24

25

26

RowSet Implementação O pacote com.sun.rowset fornece implementações de referência da Sun para as interfaces no pacote javax.sql.rowset. A implementação de referência da Sun da interface JdbcRowSet é JdbcRowSetImpl. Alguns bancos de dados podem fornecer suas próprias implementações RowSet. O método JdbcRowSet seturl especifica o URL do banco de dados. O método JdbcRowSet setusername especifica o nome de usuário. O método JdbcRowSet setpassword especifica a senha. O método Jdbc-RowSet setcommand especifica a consulta SQL que será usada para preeencher o RowSet. 27

RowSet Implementação O método JdbcRowSet execute executa a consulta SQL. O método execute realiza quatro ações: Estabelece uma Connection com o banco de dados. Prepara a consulta Statement. Executa a consulta. Armazena o ResultSet retornado pela consulta. As consultas Connection, Statement e ResultSet são encapsuladas no objeto JdbcRowSet. O método JdbcRowSet close fecha as consultas ResultSet, Statement e Connection do RowSet encapsulado. 28

PreparedStatements A interface PreparedStatement permite criar instruções SQL compiladas que executam mais eficientemente do que os objetos Statement. Pode também especificar parâmetros, tornando-os mais flexíveis do que as Statements. Os programas podem executar a mesma consulta repetidamente com valores de parâmetro diferentes. 29

PreparedStatements Para localizar todos os títulos de livro de um autor com um sobrenome e um nome específicos: PreparedStatement authorbooks = connection.preparestatement( "SELECT LastName, FirstName, Title " + "FROM Authors INNER JOIN AuthorISBN " + "ON Authors.AuthorID=AuthorISBN.AuthorID " + "INNER JOIN Titles " + "ON AuthorISBN.ISBN=Titles.ISBN " + "WHERE LastName =? AND FirstName =?" ); Os dois pontos de interrogação (?) são um espaço reservado para valores que serão passados como parte da consulta ao banco de dados. 30

PreparedStatements Antes de executar uma PreparedStatement, o programa deve especificar os valores de parâmetro utilizando os métodos set da interface PreparedStatement. Para a consulta anterior, ambos os parâmetros são strings que podem ser configuradas com o método PreparedStatement setstring como mostrado a seguir: authorbooks.setstring( 1, "Deitel" ); authorbooks.setstring( 2, "Paul" ); Os números de parâmetro são contados a partir de 1, iniciando com o primeiro ponto de interrogação (?). A interface PreparedStatement fornece métodos set para cada tipo SQL suportado. 31

PreparedStatements Invoque o método Connection preparestatement para criar uma PreparedStatement. Chamar o método PreparedStatement executequery retorna um ResultSet contendo as linhas que correspondem à consulta. O método PreparedStatement executeupdate executa a instrução SQL que modifica o banco de dados. 32

33

34

35

Procedures armazenadas Muitos sistemas de gerenciamento de bancos de dados podem armazenar instruções de SQL individuais ou conjuntos de instruções de SQL em um banco de dados, de modo que os programas que acessam esse banco de dados possam invocá-las. Tais coleções identificadas de instruções SQL são chamadas de procedures armazenadas. O JDBC permite aos programas invocar procedures armazenadas usando objetos que implementam a interface CallableStatement. Além disso, CallableStatements podem especificar parâmetros de saída em que uma procedure armazenada pode colocar valores de retorno. A interface também inclui métodos para obter os valores de parâmetros de saída retornados de uma procedure armazenada. Para aprender mais sobre CallableStatements, visite java.sun.com/javase/6/docs/technotes/guides/jdbc /getstart/ callablestatement.html#999652 36

37 Procedures armazenadas

Processamento de transações Muitos aplicativos do banco de dados impõem garantias de que uma série de inserções, atualizações e exclusões no banco de dados executem corretamente antes de os aplicativos continuarem o processamento da próxima operação de banco de dados. O processamento de transação permite que um programa que interage com um banco de dados trate uma operação de banco de dados (ou conjunto de operações) como uma operação única. Essa operação também é conhecida como operação atômica ou transação. No fim de uma transação, pode-se tomar a decisão de confirmar a transação ou reverter a transação. Confirmar a transação finaliza a(s) operação(ões) de banco de dados. A reversão da transação deixa o banco de dados no seu estado anterior à operação de banco de dados. 38

Processamento de transações O método Connection setautocommit especifica se cada instrução SQL é confirmada depois de ser completada (um argumento true) ou se várias instruções SQL devem ser agrupadas como uma transação (um argumento false). Se o argumento para setautocommit for false, o programa deve seguir a última instrução SQL na transação com uma chamada para o método Connection commit ou método Connection rollback. A interface Connection também fornece o método getautocommit para determinar o estado autocommit para Connection. 39