Java e Conexão com Banco de Dados



Documentos relacionados
Acesso a Bancos de Dados em Java (JDBC)

Integrando Java com Banco de Dados

Programação Orientada a Objetos JDBC Java Database Connectivity

Desenvolvimento de Aplicaçõ. ções em Java

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

JDBC Acessando Banco de Dados

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

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

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

Aula 1 Acesso a Banco de Dados

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

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.

Programação com Acesso a Banco de Dados

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

JAVA JDBC Java Database Connectivity

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

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

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

Conectividade de Banco de Dados Java JDBC

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

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

Acesso a banco de dados

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

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

Módulo 5 - JDBC java.sql - Conexão com Banco de Dados

Desenvolvimento Web TCC Turma A-1

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

Acessando dados em Java com JDBC

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

Java 2 Standard Edition Fundamentos de

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

(UFF) JDBC (I) TEPIS II

Programação Orientada a Objetos (DPADF 0063)

Leonardo Gresta Paulino Murta

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

Acessando bancos de dados com o JDBC

JDBC. Prof. Márcio Bueno

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

Persistência de Classes em Tabelas de Banco de Dados

JAVA 14 ODBC / JDBC Aceder a Bases de Dados através da Internet. Vitor Vaz da Silva

JDBC Java Database Connectivity

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

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

Aula 4 JDBC - Java Database Connectivity

Java na WEB Banco de Dados

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

CONEXÃO JAVA - BANCO DE DADOS

Curso: Desenvolvimento Java

Programação Orientada a Objetos II

Banco de Dados. Sérgio Luiz Ruivace Cerqueira

Padrões de Projeto e Persistência com DAO

SISTEMA EXPERIMENTALL 15/11/2009. Olá! A partir de agora vamos conhecer a IDE NetBeans efetuando um micro projeto swing.

Especialização em web com interfaces ricas

JavaServer Faces JSF

Programação em Rede JDBC

Linguagens de Programação

Introdução à Tecnologia Java 02/2012. Java Aula 05 12/09/2012. Celso Olivete Júnior.

JDBC JDBC. JDBC - Arquitetura. JDBC Arquitetura Pacote Java.sql. Java Database Connectivity JDBC PostgreSQL

Agenda. Instalação e configuração. Processamento de comandos SQL com JDBC. Driver JDBC Criação da classe de conexão

Integrando Java e Banco de Dados (Tutorial) por Jorge Henrique Cabral Fernandes

Java JDBC Aplicação Java com Acesso a um SGBD. Ricardo Terra (rterrabh [at] gmail.com) Java JDBC Maio, 2010

JPA: Persistência padronizada em Java

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

Banco de dados POO Márcio Delamaro. Programação Orientada a Objetos Prof Marcio Delamaro ICMC/USP

Banco de Dados. Prof. Leonardo Barreto Campos 1

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

JDBC DRIVER. Objetivo: Possibilitar aplicações não Zim de se conectar a um banco de dados Zim utilizando as normas JDBC.

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

Java na Web. Aplicações Web

De forma simples, para a execução de comandos SQL com JDBC, precisa-se da instancia de três classes Java. São elas: Nome da classe Função

Desenvolvimento de Sistemas de Informação

JDBC Tópicos avançados de acesso a base de dados relacional

JDBC - Java Data Base Connectivity

SQL BANCO DE DADOS. Linguagem de consulta SQL. Linguagem de consulta SQL. Linguagem de Consulta Estruturada

Java - Conexão ao Banco de Dados usando JDBC

Armazenamento organizado facilitando SCRUD; Agiliza processo de desenvolvimento de sistemas;

Execução de Instruções SQL

Aplicabilidade: visão geral

Persistência de Objetos no SGBD PostgreSQL, Utilizando as APIs: JDBC, JDK, Swing e Design Patteners DAO.

Tecnologias Java JDBC. Marcio Seiji Oyamada

PHP INTEGRAÇÃO COM MYSQL PARTE 2

JDBC - Java Data Base Connectivity

Curso PHP Aula 08. Bruno Falcão

Drive MySql de conexão para Eclipse

Driver Mysql para Banco de Dados. Conexão com um Banco de Dados

JAVA COM BANCO DE DADOS PROFESSORA DANIELA PIRES

Android e Bancos de Dados

Desenvolvimento de Aplicações para Internet Aula 9

Projeto Final Curso de Java Básico

Persistência Java para Web com MySQL

Desenvolvimento Web com Struts

Transcrição:

A Plataforma Java Programação Orientada a Objetos em Java Java e Conexão com Banco de Dados Prof. Giuliano Prado de Morais Giglio, M.Sc. Conexão com Banco de Dados JDBC: Java Database Connectivity Acesso a Bando de Dados SQL Independente da Plataforma e do Banco de Dados; Disponível no pacote J2SDK Vários Drivers disponíveis 100% Puro Java Diversos drivers disponíveis

JDBC Bancos de dados em Java JDBC Java DataBase Connectivity é a API que nos permite acessar bancos de dados através de nossa querida e amada linguagem Java. A idéia é simples, existem diferentes tipos de drivers para bancos de dados, mas para os programadores as chamadas são uniformes. JDBC Estabelece conexão com o Banco de Dados Envia requisições SQL Processa os resultados

JDBC Modelo de desenvolvimento de aplicações com BD Recursos on-line sobre JDBC Site da sun sobre JDBC http://java.sun.com/products/jdbc/ Tutorial sobre JDBC http://java.sun.com/docs/books/tutorial/jdbc/ JDBC Drivers disponíveis http://industry.java.sun.com/products/jdbc/drivers

JDBC Detalhes de Conexão Tipos de Dados Suportados

Acessando um banco Primeiro deve haver um banco de dados configurado e disponível Criando um banco Access... Uso de um Banco de Dados Duas opções Acessar o Banco via ponte JDBC-ODBC Necessidade de configurar um DSN do usuário no ODBC. Via driver JDBC direto para o Banco Necessidade de se obter o driver adequado.

Configuração ODBC Configuração ODBC

Passos básicos para Conexão JDBC Importar java.sql.* Carregar driver JDBC Especificar BD Abrir conexão com BD Criar um objeto comando (statement) Submeter o comando SQL Receber o resultado Utilizar os resultados no programa Passos básicos para Conexão JDBC 1. Importar java.sql.* import java.sql*; 2. Carregar driver JDBC try { Class.forName(" sun.jdbc.odbc.jdbcodbcdriver"); catch { ClassNotFoundException cnfe) { System.out.println( Erro no carregamento do driver: " cnfe); Obs: toda tentativa de conexão com driver de BD tem que tratar possíveis exceções. a JVM deve poder encontrar estas classes: para aplicações, a variável de ambiente CLASSPATH deve incluir os drivers

A abertura da conexão é feita pelo método getconnection, que recebe uma URL (Universal Resource Location) como argumento JDBC URLs são formadas por: um protocolo (normalmente jdbc), um subprotocolo (normalmente é o tipo de driver) e informações para o SGBD. Connection conn = DriverManager.getConnection ("jdbc:odbc:empresa", "login", "senha"); 3. Especificar BD String host = jdbc:odbc:empresa"; 4. Abrir conexão com BD String nomeusuario= giuliano"; String senha = "secreta"; Connection connection = DriverManager.getConnection(host, nomeusuario, senha); Passos básicos para Conexão JDBC Opcionalmente, podemos obter algumas informações sobre o Banco. DatabaseMetaData dbmetadata = connection.getmetadata(); String nomebanco = dbmetadata.getdatabaseproductname(); System.out.println("Database: " + nomebanco); String versaobanco =dbmetadata.getdatabaseproductversion(); System.out.println("Version: " + versaobanco);

Conectando... import java.sql.*; class BDConexao { public static void main (String args[]) { try { String url = "jdbc:odbc:empresa"; String usuario = ""; String senha = ""; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection con; con = DriverManager.getConnection(url,usuario,senha); System.out.println("Conexão realizada com sucesso."); con.close(); catch(exception e) { System.out.println("Problemas na conexão."); Statements Uma vez conectado queremos executar statements Assim podemos utilizar executeupdate(string str) para executar create table, insert, update executequery(string str) para executar consultas (retorna ResultSet).

5. Criar um objeto comando (statement) Statement statement =connection.createstatement(); 6. Submeter o comando SQL String consulta ="SELECT col1, col2, col3 FROM algumatabela"; ResultSet resultado =statement.executequery(consulta); Para modificar o banco, usar executeupdate ou invés de executequery,tendo como parâmetro um string contendo comandos UPDATE, INSERT,ou DELETE Usar setquerytimeout para especificar o tempo máximo de espera pelo resultado da consulta. Criando uma tabela stmt = cnt.createstatement(); try { stmt.executeupdate("create TABLE LIVRO " + "(TITULO VARCHAR(50), ISBN VARCHAR(30), + AUTOR VARCHAR(50), PAGINAS INTEGER)"); catch (SQLException e) { System.out.println(e);

Inserindo Dados import java.sql.*; class BDConsulta{ public static void main (String args[]) { try { String url = "jdbc:odbc:empresa"; Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection con = DriverManager.getConnection(url, " ", " "); Statement st = con.createstatement();, st.executeupdate("insert INTO Pedidos (CodPedido, CodCli, Descricao, Valor, DataPedido) VALUES (1001,1230,'Dicionário Aurélio Século XXI.',36.50,#16-03-2002#)"); System.out.println("Operação realizada com sucesso."); st.close(); con.close(); catch(exception e) { System.out.println("Problemas na conexão."); Consultando dados // conexão estabelecida Statement st = con.createstatement(); ResultSet rs = st.executequery("select * FROM Pedidos"); while (rs.next()){ System.out.print(rs.getString("CodPedido") + " "); System.out.print(rs.getString("CodCli") + " "); System.out.print(rs.getString("Descricao") + " "); System.out.print(rs.getString("Valor") + " "); System.out.println(rs.getString("DataPedido")); System.out.println("Operação realizada com sucesso."); st.close(); con.close(); catch(exception e) { System.out.println("Problemas na conexão. ");

Uso de driver JDBC direto Colocar o arquivo com os drivers do Banco de Dados no diretório WEB-INF/lib *criar o diretório lib em Geralmente é um arquivo.jar. Passos básicos para Conexão JDBC Direto 1. Importar java.sql.* import java.sql*; 2. Carregar driver JDBC try { Class.forName("com.mysql.jdbc.Driver").newInstance(); //ou //Class.forName("oracle.jdbc.driver.OracleDriver"); catch { ClassNotFoundException cnfe) { System.out.println( Erro no carregamento do driver: " cnfe);

Passos básicos para Conexão JDBC Direto 3. Especificar BD String host = //localhost"; String dbname = livraria"; String mysqlurl= "jdbc:mysql: +host + /" +dbname; 4. Abrir conexão com BD String nomeusuario= root"; String senha = admin"; Connection connection = DriverManager.getConnection(mysqlURL, nomeusuario, senha); PreparedStatements Também podemos usar PreparedStatements para ter um resultado mais rápido...

PreparedStatements... PreparedStatement prep = cnt.preparestatement( "SELECT * FROM LIVRO WHERE ISBN =?"); prep.setstring(1,"123456789"); ResultSet rs = prep.executequery(); while (rs.next()) { String s = rs.getstring("titulo"); String i = rs.getstring("isbn"); String a = rs.getstring("autor"); int pa = rs.getint("paginas"); System.out.println(s + " " + i + " " + a + " " + pa); Prepared Statements Cada vez que se executa um comando SQL passado por meio de uma String, este String deve ser analisado pelo processador de SQL do SGBD que irá, no caso da String estar sintaticamente correta, gerar um código binário que será executado para atender à solicitação. Todo esse processo é caro e sua execução repetidas vezes terá um impacto significativo sobre o desempenho da aplicação e do SGBD como um todo. Prepared Statement é indicado nos casos onde um comando será executado várias vezes em uma aplicação. Neste caso é melhor compilar o comando uma única vez e toda vez que for necessário executá-lo basta enviar o comando compilado. Além disso, o comando pré-compilado pode ser parametrizado, tornando-o mais genérico e, portanto, apto a expressar um maior número de consultas. Para criar um Prepared Statement é necessário: PreparedStatement pstmt = con.preparestatement( INSERT INTO usuarios(login,senha) VALUES(?,? ) );

O comando anterior insere uma nova linha na tabela usuarios com os valores das colunas login e senha passados por parâmetro. O caractere? representa o parâmetro. Este tipo de comando só possui valor tendo parâmetros, caso contrário teria pouca chance de ser reutilizado. Para executar o comando devemos especificar o valor dos parâmetros e executar o comando, como mostrado no exemplo abaixo: pstmt.clearparameters(); pstmt.setint(1,8); pstmt.setstring(2, Clara Maria ); pstmt.executeupdate(); Setando os Parâmetros Receber o resultado while(resultadot.next()){ System.out.println(resultado.getString(1)+""+resultado.getString(2 ) +""+ resultado.getstring(3)); A primeira coluna tem índice 1, não 0 A classe ResultSet oferece à aplicação a tabela resultante de um Select e mantém um cursor posicionado em uma linha da tabela. Inicialmente este cursor está antes da primeira linha e a mensagem next() movimenta o cursos para frente. Permite à aplicação pegar os dados das colunas da linha corrente através de mensagem getxxx(<cloluna>). XXX é o tipo da coluna <coluna> é o nome da coluna ou sua posição (a partir de 1) ResultSet rs = stmt.executequery("select a, b, c from table1"); while (rs.next()) { int x = rs.getint("a"); String s = rs.getstring(2); float f = rs.getfloat("c");

Permite obter informações sobre o tipo de tabela que resultou o select. Quais os nomes e os tipos das colunas Se a coluna do tipo é numérico com sinal ResultSet result = stmt.executequery( "SELECT * FROM TabEx ORDER BY id DESC"); ResultSetMetaData meta = result.getmetadata(); int columns = meta.getcolumncount(); for (int i=1;i<=columns;i++) { System.out.println (meta.getcolumnlabel(i) + "\t" + meta.getcolumntypename(i)); Outros métodos da interface ResultSet isfirst(): retorna verdadeiro se o curso está posicionado sobre o primeiro registro da tabela resultante islast(): retorna verdadeiro se o curso está posicionado sobre o ultimo registro da tabela resultante next(): posiciona o cursor da tabela sobre o próximo registro. Transações Uma transação é um conjunto de Statements que são validados no BD com commit ou cancelados com rollbabk Por default, todos os comandos no JDBC são auto-commit. connection.setautocommit(false); // muda o default Statement s = con.createstatement(); try { s.executeupdate("sql statement 1"); s.executeupdate("sql statement 2"); connection.commit(); // valida os 2 updates catch (Exception e) { connection.rollback(); // senão, desfaz os updates