Академический Документы
Профессиональный Документы
Культура Документы
Integrando Java e Banco de Dados (Tutorial) por Jorge Henrique Cabral Fernandes
Departamento de Informtica e Matemtica Aplicada Universidade Federal do Rio Grande do Norte
Contedo
Referncias Introduo O Modelo Computacional Um Exemplo Simples Elementos da API JDBC 1.0 Aspectos Avanados da API JDBC Exemplo de Sistema Three-Tier
Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.
Referncias
JDBCTM - Connecting Java and Databases. Sun Microsystems, 1996 JDBC Database Access, by Maydene Fisher (Java Tutorial, Sun Microsystems, 1999) JDBC Home Page http://java.sun.com/products/jdbc
Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.
JDBCTM: Introduo
JDBC
Facilita a integrao entre programas Java e SGBDs Relacionais Suporta a execuo de comandos SQL atravs de uma API definida em Java.
Call Level Interface
Modelo Computacional
Cliente Cliente
Aplicao next(); next();next(); get*(Col-n); get*(n); execQuery() getConn() execUpdate() createStmt() Col-1 Col-2 ... Col-n
Conn
Stmt
ResultSet
Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.
JDBC 1.0
Um Exemplo Simples
Um Exemplo Simples
import java.sql.*; public class Select { static { try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } catch ( ClassNotFoundException cnfe) { System.out.print(cnfe.toString()); } } public static void main(String[] args) { try { Connection conn = DriverManager.getConnection( "jdbc:odbc:Banco_de_Java", user", password"); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT numero, saldo FROM contas"); System.out.println("Resultados da consulta"); while (rs.next()) { String numero = rs.getString(1); int saldo = rs.getInt(2); System.out.println(" Conta Bancria nmero:["+numero+"] Saldo:["+saldo+"]"); } stmt.close(); conn.close(); } catch (SQLException ex) { ex.printStackTrace(); } System.exit(0); } }
Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.
Estabelecer Connection
Connection connection = DriverManager.getConnection( "jdbc:odbc:BancodeJava" /*JDBC URL*/ ,"jorge","jhcf");
Criar Statement
Statement statement = connection.createStatement();
Executar Queries
ResultStatement result = statement.executeQuery( "SELECT * FROM contas WHERE numero =\'1\');
Executar Updates
statement.executeUpdate( "UPDATE contas SET saldo = 100 WHERE numero = \'1\'");
Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.
Classes
java.util.Date
Date Time Timestamp
Excees
SQLException
SQLWarning
DataTruncation
Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.
Classes do Exemplo
Driver DriverManager Connection Statement ResultSet SQLException
Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.
Driver (interface)
Cria uma instncia e registra-se junto ao DriverManager quando a classe carregada Conecta-se a um tipo de SGBD especfico Principais Mtodos
boolean acceptsURL(String) Connection connect(String, Properties) boolean jdbcCompliant()
Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.
Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.
Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.
DriverManager (classe)
Gerencia um conjunto de drivers JDBC disponveis. Testa qual deles mais apropriado para uma dada conexo Busca o nome dos drivers para carga na propriedade jdbc.drivers da classe System. Ex:
jdbc.drivers=sun.jdbc.odbc.JdbcOdbcDriver:wombat.sql.Driver
Principais Mtodos
Connection getConnection(String, String, String) registerDriver(Driver) get(set)LoginTimeout(int) get(set)LogStream(PrintStream)
Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.
Connection (interface)
Representa uma sesso junto a uma base de dados especfica Gerencia a execuo de comandos (Statement) e o retorno de resultados (ResultSet) Por default, realiza um commit aps a execuo de cada Statement. Principais Mtodos
Statement createStatement(); close(), commit(), rooback(), setAutoCommit(boolean b) DatabaseMetaData getMetaData(); PreparedStatement prepareStatement(String sql); CallableStatement prepareCall(String sql);
Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.
Statement
Executa comandos estticos SQL A cada momento, apenas um ResultSet por Statement Principais Mtodos
ResultSet executeQuery(String sql)
SQL statement SELECT
Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.
ResultSet
Tabela de dados gerada pela execuo de um comando executeQuery() Linhas so acessadas seqencialmente - next(); Colunas so acessadas em qualquer ordem
mtodos getXXX(int collumnIndex|String collName)
* getBoolean(), _Byte(), _Int(), _Float(), _Double(), Long(), Short(), String() byte[] getBytes() java.lang.BigDecimal getBigDecimal(); InputStream getBinaryStream() getMetaData();
Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.
SQLException
Informao sobre erro no acesso base de dados
String descrevendo o erro
getMessage()
Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.
Arquitetura do Sistema
client.x.br
Controle da Aplicacao
server.dimap.ufrn.br Oracle:1721
Banco_de_Java CONTAS
NUMERO 1 2 SALDO 50 0 -800
TCP/IP
Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.
...
...
Conn
Stmt
ResultSet
Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.
Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.
public BancoJDBC()
public BancoJDBC() throws FalhaDeComunicacaoException { try { conn = DriverManager.getConnection(urlBancoDeDados, nomeUsuario, senhaUsuario); stmt = conn.createStatement(); stmt.getClass(); } catch (SQLException sqle) { throw new FalhaDeComunicacaoException(sqle); } }
Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.
Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.
Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.
Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.
Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.
Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.
Cliente
java.sql
Servidor de Aplicao
Middleware JDBC, ODBC ou Proprietrio
Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.
Three-Tier
Cliente Java Aplicao/Applet
java.rmi
Middleware RMI
java.rmi
Middleware RMI HTTP
java.net
SGBD Relacional A B C
Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.
Three-Tier
Cliente Java Aplicao/Applet, HTML Browser
N-Tier
Cliente Java Aplicao/Applet, HTML Browser
java.net
Middleware HTTP
java.net
Middleware HTTP HTTP
java.net
java.servlet Servlets
SGBD Relacional A B C
Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.
N-Tier
Cliente Java Aplicao/Applet
N-Tier
Cliente Java Aplicao/Applet, HTML Browser
java.rmi, javax.jndi
Middleware RMI, JNDI
java.rmi, javax.jndi
Middleware RMI, JNDI HTTP
java.net
javax.ejb EJBs
SGBD Relacional A B C
Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.
Host #2
Servletrunner/HTTP Server
SurveyInsert Survey.html SurveyQuery
Host #3
ODBC Connector
Surveys survey1
employee comments ...
O Futuro de JDBC
O Futuro de JDBCTM
JDBC 1.0 (JDK 1.1) JDBC 2.0 (JDK 1.2) JDBC Standard Extensions
Heavy-duty DB Computing
SQL3 types Scrollable cursors programatic and batch updates Fundamental p/ Enterprise JavaBeans
Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.
Outras Referncias
Servlets Introduction to SQL Language
http://w3.one.net/~jhoffman/sqltut.htm
Jguru FAQ
http://www.jguru.com/jguru/faq/printablefaq.jsp?faq=JDBC
Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.
Prximos Passos
JDBC Tutorial da Sun Microsystems JDBC Guide Jguru FAQ Connection Pool Aspectos Avanados da JDBC 2.0
Java Deployment Course - JDBCTM: Integrando JavaTM e SQL. Copyright 2000, 1999, 1998. Jorge H. C. Fernandes. Todos os Direitos Reservados.
XV Simpsio Brasileiro de Bancos de Dados 2-6 de Outubro de 2000 Joo Pessoa - Paraba, Brasil
Integrando Java e Banco de Dados (Tutorial) por Jorge Henrique Cabral Fernandes
Departamento de Informtica e Matemtica Aplicada Universidade Federal do Rio Grande do Norte