SlideShare una empresa de Scribd logo
1 de 10
Descargar para leer sin conexión
Sumário
1.      JDBC .........................................................................................................................2
     1.1.    Pré requisitos .....................................................................................................2
        1.1.1.    JDBC .........................................................................................................2
        1.1.2.    Base de Dados ...........................................................................................2
        1.1.3.    Driver ........................................................................................................2
     1.2.    Estabelecer uma ligação ....................................................................................2
        1.2.1.    Carregar o Driver ......................................................................................3
        1.2.2.    Criar uma conexão.....................................................................................3
     1.3.    Criar JDBC Statements......................................................................................4
        1.3.1.    executeUpdate ...........................................................................................5
        1.3.2.    executeQuery.............................................................................................5
     1.4.    Obter Resultados de objectos ResultSet ............................................................5
        1.4.1.    Método next() ............................................................................................6
        1.4.2.    Método getXXX ........................................................................................6
     1.5.    Excepções ..........................................................................................................7
     1.6.    Limpar recursos .................................................................................................7
     1.7.    Um exemplo inteiro...........................................................................................7
     1.8.    Exercícios ..........................................................................................................9




Página 1 de 10
1. JDBC

JDBC – Java Database Connectivity é um API (Application Programming Interface)
para o Java que permite comunicação com base de dados. A interface de JDBC foi
desenhada de modo ser independente da base de dados; assim cada base de dados
precisa de um “Driver” (provido pelo vendedor de base de dados)

1.1. Pré requisitos

1.1.1. JDBC

O JDBC vem com o JDK então já deverá estar instalado. Para usar o JDBC 1.0 só
precisará do JDK 1.1, para a versão JDBC 2.0 precisará do JDK 1.2.

1.1.2. Base de Dados

Será necessário ter uma base de dados. Aqui usaremos MS Access que já está instalado
nas máquinas. Assim será necessário criar uma base de dados em Access com o nome
training e com uma tabela chamada people com os campos id, name e age.

1.1.3. Driver

Dado que o JDBC é independente da base de dados, por cada tipo de base de dados é
necessário um “Driver” para conectar. O Driver é um ajudante e tradutor. O vendedor
da base de dados providencia Driver, mas também pode-se encontrar Drivers na
Internet.


O Driver que precisamos para o MS Access é o JDBC-ODBC Driver. Este Driver é
fornecido pelo JDK.

1.2. Estabelecer uma ligação

Para se fazer uma conexão com a base de dados são necessários os seguintes passos:




Página 2 de 10
1.2.1. Carregar o Driver

Só precisamos de uma linha de código como a seguinte:


Class.forName("nomeDaClasse");



Usaremos     o    JDBC-ODBC         Bridge     Driver.       O   nome   da   classe   é
sun.jdbc.odbc.JdbcOdbcDriver. Carrega-se assim:



Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");



Esta criará uma instância do Driver e registá-la como DriverManager. Depois, quando
o JDBC pedir uma ligação para uma BD, o DriverManager irá buscar entre estes
Drivers registados, e usará este Driver se for compatível.

1.2.2. Criar uma conexão

O segundo passo é criar uma conexão à base de dados. Para isso precisamos:
   1) O URL – Uniform Reource Locater
   2) O username
   3) O password
O URL tem 3 partes. É criado por
Jdbc:subProtocol:nomeDeDataSource



   1) O protocolo jdbc.
   2) O sub protocolo depende do tipo de Driver. Em nosso caso do JDBC-ODBC
       Bridge Driver será “odbc”
   3) O nome do data source (ou databse system) é configurado de uma maneira
       diferente dependendo da base de dados.


Neste caso, estamos a usar uma base de dados MS Access. Temos que registar o Data
Source da seguinte maneira:
   1) Abrir o Control Panel (“Start” ”Settings” ”Control Panel”).
   2) Selecionar “Administrative Tools” ”Data Sources (ODBC)”)
   3) Selecionar o tab “System DNS”


Página 3 de 10
4) Clique Add
      5) Selecionar “Driver do Microsoft Access (*.mdb)” e clique “Finish”
      6) Inserir o Data Source Name “training”.
      7) Selecionar “Select” e encontar o ficheiro c:caminhotraining.mdb
      8) Clique “Advanced”
      9) Inserir Login name: admin
      10) Inserir Password: password
      11) Selecionar OK
      12) Selecionar OK duas vezes para sair.


Agora, o URL para o nosso caso seria “jdbc:odbc:training”. Agora passamos estes
detalhes (URL,username,password) como parâmetros ao método getConnection da
classe DriverManager.


Ex:
String DB_URL ="jdbc:odbc:training";
Connection conn= DriverManager.getConnection(url,username,password);


A classe DriverManager controla todos detalhes para criar uma conexão à base de
dados. O método getConection é o único do DriverManager que normalmente é
necessário saber.


A conexão devolvida pelo método DriverManager.getConnection é uma conexão
aberta que podemos usar para criar objectos de JDBC Statements, que são usados para
passar os Statements do SQL à base de dados.

1.3. Criar JDBC Statements

O objecto do Statement é o que manda os Statements do SQL à base de dados. Só é
necessário criar um objecto do Statement e depois executar o método apropriado. Os
métodos são os seguintes:
      •   executeQuery – para um Statement do SELECT
      •   executeUpdate – para um Statement para criar ou modificar uma tabela




Página 4 de 10
É necessário uma instância de uma conexão aberta para criar o objecto do Statement.
No exemplo seguinte, é usado o objecto da Connection conn (criada acima).


Statement stmt=conn.createStatement();


Assim sendo, stmt existe, mas não tem um Statement do SQL para passar à base de
dados. É imperioso que forneça o método que se pretende usar.
Ex:
stmt.executeUpdate("UPDATE …”);
stmt.executeQuery("SELECT …”);




1.3.1. executeUpdate

O método executeUpdate é usado para criar ou modificar uma tabela. Quando usado
com SQL Statements como INSERT, UPDATE ou DELETE, devolve um int de row
count (nº de linhas criadas/alteradas). Quando usado com SQL Statements de DDL

(Data Definiton Language), ex CREATE, MODIFY, devolve só 0.


Ex:
stmt.executeUpdate(“UPDATE        people     SET    age=21      WHERE   name   LIKE
‘zacaza’”)




1.3.2. executeQuery

O método executeQuery é usado para seleccionar dados de uma tabela. Devolve um
objecto ResultSet. Este é um objecto que representa os dados encontrados pelo
SELECT.




1.4. Obter Resultados de objectos ResultSet

O ResultSet tem os dados organizados em filas, como quando se executa um select
no cliente da base de dados. O objecto ResultSet tem um cursor que aponta à linha
actual de dados.


Página 5 de 10
Ex:
ResultSet rs=stmt.executeQuery("SELECT id, name, age FROM people");




1.4.1. Método next()

Inicialmente o cursor é colocado antes da primeira fila. O método next move o cursor
até a próxima linha. A linha actual do cursor é a linha em que pode actuar.


NB: Quando o ResultSet só tem uma linha, tem que se chamar next primeiro para
acessá-lo. E porque o método next devolve false quando não há mais filas no objecto
ResultSet, poderá ser usado num ciclo while para iterar através do ResultSet.



Ex:
while (rs.next()){
       //actuar em linha acutal
}




1.4.2. Método getXXX

Para ler dados da linha actual, o ResultSet tem vários métodos em forma de getXXX.
Usa-se o método apropriado para o tipo de valor que queremos obter.


Alguns exemplos:
Tipo de Valor em BD           Nome do Método                Tipo de valo em JAVA
Varchar                       getString()                   java.lang.String
Numeric                       getInt()                      Int
Date                          getDate()                     java.sql.Date

Estes métodos aceitam como parâmetros o nome da coluna (String) ou índice da
coluna(int).
Ex:
String name=rs.getString(“name”);
int age=rs.getInt(2);




Página 6 de 10
1.5. Excepções

O método Class.forName lança um ClassNotFoundException
Os métodos de JDBC lançam SQLExceptions.
O tratamento de exepções é feito pelos blocos try e catch e tratá-los apropradamente.
E útil imprimir os erros, assim saber-se-á porque o código não terá eventualmente
funcionado.



1.6. Limpar recursos

Quando se abre uma conexão à base de dados, cria-se uma conexão aberta na base de
dados. É da responsabilidade do programador fechar esta conexão quando se chega ao
término. Também é necessário fechar o ResultSet e Statement.


rs.close();
stmt.close();
conn.close();



É aconselhável fechar os recursos dentro do bloco finally porque também quando o
código inteiro lançar excepções, é necessário limpar recursos. Note que estes métodos
para fechar também podem lançar excepções.



1.7. Um exemplo inteiro

/*
 * Created on 5/Abr/2007
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
package jdbc;


/**
 * @author mazibe
 *



Página 7 de 10
* TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */


import java.sql.*;
public class JDBCExample {
      public static final String USERNAME ="admin";
      public static final String PASSWORD ="password";
      public static final String DB_URL ="jdbc:odbc:training";


      public        static       void     main(String       args[])      throws
ClassNotFoundException {
             //Carregar o JDBC-ODBC Driver
             Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");


             Connection conn=null;
             Statement stmt=null;
             ResultSet rs=null;
             try{
                    //Obter uma connexão do Driver Manager
                    conn=
DriverManager.getConnection(DB_URL,USERNAME,PASSWORD);
                    //Criar     um   Statement   object    para   que   possamos
submeter SQL Statements ao Driver
                    stmt=conn.createStatement();
                    //Submeter a query, criando um objecto ResultSet
                    rs=stmt.executeQuery("SELECT name, age FROM people");
                    //Mostrar o conteúdo do ResultSet
                    while (rs.next()){
                             int id = rs.getInt("id");
                             String name=rs.getString("name");
                             int age = rs.getInt("age");
                             System.out.println("id: "+id+", name: "+name+",
age: "+age);
                    }
             } catch (SQLException e){
                    System.out.println("SQLException in connectiong to a
database or making query:n"+e);
             } finally {
                    try {
                             //Fechar o ResultSet



Página 8 de 10
if (rs !=null)
                                     rs.close();
                               //Fechar o Statement
                               if (stmt !=null)
                                     stmt.close();
                               //Fechar a conexão
                               if (conn !=null)
                                     conn.close();
                          }catch(SQLException e) {
                               System.out.println("could             not      close
resources");
                          }
                }
         }


}



1.8. Exercícios

    1) Copie o exemplo acima e verifique se corre.
    2) Escreva o pseudocódigo usando as frases seguintes, para conectar e correr uma
         query à base de dados

             o Obter conexão à base de dados
             o Carregar o Driver
             o Fechar recursos
             o Executar statement
             o Instanciar o Driver
             o Criar statement
             o Ler ResultSet
    3)
             a) Crie uma nova classe com o método main.
             b) Crie uma conexão à base de dados training e obtenha o objecto
                 Statement.

             c) Qual o método que será usado para fazer um insert?
             d) Crie uma nova entrada na tabela people com o seu nome, cidade e
                 idade.




Página 9 de 10
e) Abra a base de dados em MS Access e veja se funcionou.


   4)
           f) Edite a classe criada no exercício nº 3) para ler os parâmetros do método
               main.

           g) Corra o main algumas vezes, variando os parâmetros, e verifique na base
               de dados.
   5) Agora queremos fazer uma query à base de dados para ler a idade, por exemplo,
        e por cada linha faça um update, por exemplo para aumentar a idade em uma
        unidade. Edite o pseudocódigo escrito na pergunta 2).


   6)


           a) Crie uma nova classe com o método main e crie uma conexão à base de
               dados training
           b) Desta vez crie 2 objectos do Statement.
           c) Com o primeiro seleccione a chave e a idade da tabela people.
           d) Usando o segundo objecto do Statement, para cada linha do resultado,
               faça um update para aumentar a idade em uma unidade.
           e) Verifique se os dados da base de dados alteraram.




Página 10 de 10

Más contenido relacionado

Destacado (10)

Conceitos basicos
Conceitos basicosConceitos basicos
Conceitos basicos
 
Computacao distribuida com rmi
Computacao distribuida com rmiComputacao distribuida com rmi
Computacao distribuida com rmi
 
Corbawebserves
CorbawebservesCorbawebserves
Corbawebserves
 
Aula sd 2008_02aspectosprojectosds
Aula sd 2008_02aspectosprojectosdsAula sd 2008_02aspectosprojectosds
Aula sd 2008_02aspectosprojectosds
 
Modelos de estruturação de sistemas distribuídos
Modelos de estruturação de sistemas distribuídosModelos de estruturação de sistemas distribuídos
Modelos de estruturação de sistemas distribuídos
 
Atividade sd
Atividade sdAtividade sd
Atividade sd
 
Sd capitulo01
Sd capitulo01Sd capitulo01
Sd capitulo01
 
Sistemas operativos distribuidos e de redes
Sistemas operativos distribuidos e de redesSistemas operativos distribuidos e de redes
Sistemas operativos distribuidos e de redes
 
Caracterizacao de sistemas distribuidos
Caracterizacao de sistemas distribuidosCaracterizacao de sistemas distribuidos
Caracterizacao de sistemas distribuidos
 
Sistemas Distribuídos - Replicação de Banco de Dados
Sistemas Distribuídos - Replicação de Banco de DadosSistemas Distribuídos - Replicação de Banco de Dados
Sistemas Distribuídos - Replicação de Banco de Dados
 

Similar a Jdbc

Apostila: Curso de java III
Apostila: Curso de java IIIApostila: Curso de java III
Apostila: Curso de java III
Verônica Veiga
 
Silo.tips aula 4-jdbc-java-database-connectivity
Silo.tips aula 4-jdbc-java-database-connectivitySilo.tips aula 4-jdbc-java-database-connectivity
Silo.tips aula 4-jdbc-java-database-connectivity
ffeitosa
 
Desenvolvimento em .Net - Acesso a Dados
Desenvolvimento em .Net - Acesso a DadosDesenvolvimento em .Net - Acesso a Dados
Desenvolvimento em .Net - Acesso a Dados
Vitor Silva
 
1102 banco-de-dados-com-java-jdbc
1102 banco-de-dados-com-java-jdbc1102 banco-de-dados-com-java-jdbc
1102 banco-de-dados-com-java-jdbc
Jamille Madureira
 

Similar a Jdbc (20)

Conectando seu banco de dados usando jdbc
Conectando seu banco de dados usando jdbcConectando seu banco de dados usando jdbc
Conectando seu banco de dados usando jdbc
 
Apostila: Curso de java III
Apostila: Curso de java IIIApostila: Curso de java III
Apostila: Curso de java III
 
CURSO JAVA 01
CURSO JAVA 01CURSO JAVA 01
CURSO JAVA 01
 
Java13
Java13Java13
Java13
 
Fundamentos de JDBC
Fundamentos de JDBCFundamentos de JDBC
Fundamentos de JDBC
 
Introdução à programação para web com Java - Módulo 01: Conexão com bamco de...
Introdução à programação para web com Java -  Módulo 01: Conexão com bamco de...Introdução à programação para web com Java -  Módulo 01: Conexão com bamco de...
Introdução à programação para web com Java - Módulo 01: Conexão com bamco de...
 
Fundamentos de JDBC
Fundamentos de JDBCFundamentos de JDBC
Fundamentos de JDBC
 
Fundamentos de JDBC
Fundamentos de JDBCFundamentos de JDBC
Fundamentos de JDBC
 
Java 16 Jdbc
Java 16 JdbcJava 16 Jdbc
Java 16 Jdbc
 
Trabalho teorico de Linguagem de Programação
Trabalho teorico de Linguagem de ProgramaçãoTrabalho teorico de Linguagem de Programação
Trabalho teorico de Linguagem de Programação
 
Java database connectivity jdbc
Java database connectivity   jdbcJava database connectivity   jdbc
Java database connectivity jdbc
 
Java com banco my sql
Java com banco my sqlJava com banco my sql
Java com banco my sql
 
ADO.ppt
ADO.pptADO.ppt
ADO.ppt
 
Silo.tips aula 4-jdbc-java-database-connectivity
Silo.tips aula 4-jdbc-java-database-connectivitySilo.tips aula 4-jdbc-java-database-connectivity
Silo.tips aula 4-jdbc-java-database-connectivity
 
05 - Acesso e Manipulação de Dados através de Classes do ADO.NET
05 - Acesso e Manipulação de Dados através de Classes do ADO.NET05 - Acesso e Manipulação de Dados através de Classes do ADO.NET
05 - Acesso e Manipulação de Dados através de Classes do ADO.NET
 
Jdbc, JAVA DATABASE CONNECTIVITY
Jdbc, JAVA DATABASE CONNECTIVITYJdbc, JAVA DATABASE CONNECTIVITY
Jdbc, JAVA DATABASE CONNECTIVITY
 
Bancos de dados e jdbc java para desenvolvimento web
Bancos de dados e jdbc   java para desenvolvimento webBancos de dados e jdbc   java para desenvolvimento web
Bancos de dados e jdbc java para desenvolvimento web
 
Desenvolvimento em .Net - Acesso a Dados
Desenvolvimento em .Net - Acesso a DadosDesenvolvimento em .Net - Acesso a Dados
Desenvolvimento em .Net - Acesso a Dados
 
Persistência com JPA usando o NetBeans 7
Persistência com JPA usando o NetBeans 7Persistência com JPA usando o NetBeans 7
Persistência com JPA usando o NetBeans 7
 
1102 banco-de-dados-com-java-jdbc
1102 banco-de-dados-com-java-jdbc1102 banco-de-dados-com-java-jdbc
1102 banco-de-dados-com-java-jdbc
 

Jdbc

  • 1. Sumário 1. JDBC .........................................................................................................................2 1.1. Pré requisitos .....................................................................................................2 1.1.1. JDBC .........................................................................................................2 1.1.2. Base de Dados ...........................................................................................2 1.1.3. Driver ........................................................................................................2 1.2. Estabelecer uma ligação ....................................................................................2 1.2.1. Carregar o Driver ......................................................................................3 1.2.2. Criar uma conexão.....................................................................................3 1.3. Criar JDBC Statements......................................................................................4 1.3.1. executeUpdate ...........................................................................................5 1.3.2. executeQuery.............................................................................................5 1.4. Obter Resultados de objectos ResultSet ............................................................5 1.4.1. Método next() ............................................................................................6 1.4.2. Método getXXX ........................................................................................6 1.5. Excepções ..........................................................................................................7 1.6. Limpar recursos .................................................................................................7 1.7. Um exemplo inteiro...........................................................................................7 1.8. Exercícios ..........................................................................................................9 Página 1 de 10
  • 2. 1. JDBC JDBC – Java Database Connectivity é um API (Application Programming Interface) para o Java que permite comunicação com base de dados. A interface de JDBC foi desenhada de modo ser independente da base de dados; assim cada base de dados precisa de um “Driver” (provido pelo vendedor de base de dados) 1.1. Pré requisitos 1.1.1. JDBC O JDBC vem com o JDK então já deverá estar instalado. Para usar o JDBC 1.0 só precisará do JDK 1.1, para a versão JDBC 2.0 precisará do JDK 1.2. 1.1.2. Base de Dados Será necessário ter uma base de dados. Aqui usaremos MS Access que já está instalado nas máquinas. Assim será necessário criar uma base de dados em Access com o nome training e com uma tabela chamada people com os campos id, name e age. 1.1.3. Driver Dado que o JDBC é independente da base de dados, por cada tipo de base de dados é necessário um “Driver” para conectar. O Driver é um ajudante e tradutor. O vendedor da base de dados providencia Driver, mas também pode-se encontrar Drivers na Internet. O Driver que precisamos para o MS Access é o JDBC-ODBC Driver. Este Driver é fornecido pelo JDK. 1.2. Estabelecer uma ligação Para se fazer uma conexão com a base de dados são necessários os seguintes passos: Página 2 de 10
  • 3. 1.2.1. Carregar o Driver Só precisamos de uma linha de código como a seguinte: Class.forName("nomeDaClasse"); Usaremos o JDBC-ODBC Bridge Driver. O nome da classe é sun.jdbc.odbc.JdbcOdbcDriver. Carrega-se assim: Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Esta criará uma instância do Driver e registá-la como DriverManager. Depois, quando o JDBC pedir uma ligação para uma BD, o DriverManager irá buscar entre estes Drivers registados, e usará este Driver se for compatível. 1.2.2. Criar uma conexão O segundo passo é criar uma conexão à base de dados. Para isso precisamos: 1) O URL – Uniform Reource Locater 2) O username 3) O password O URL tem 3 partes. É criado por Jdbc:subProtocol:nomeDeDataSource 1) O protocolo jdbc. 2) O sub protocolo depende do tipo de Driver. Em nosso caso do JDBC-ODBC Bridge Driver será “odbc” 3) O nome do data source (ou databse system) é configurado de uma maneira diferente dependendo da base de dados. Neste caso, estamos a usar uma base de dados MS Access. Temos que registar o Data Source da seguinte maneira: 1) Abrir o Control Panel (“Start” ”Settings” ”Control Panel”). 2) Selecionar “Administrative Tools” ”Data Sources (ODBC)”) 3) Selecionar o tab “System DNS” Página 3 de 10
  • 4. 4) Clique Add 5) Selecionar “Driver do Microsoft Access (*.mdb)” e clique “Finish” 6) Inserir o Data Source Name “training”. 7) Selecionar “Select” e encontar o ficheiro c:caminhotraining.mdb 8) Clique “Advanced” 9) Inserir Login name: admin 10) Inserir Password: password 11) Selecionar OK 12) Selecionar OK duas vezes para sair. Agora, o URL para o nosso caso seria “jdbc:odbc:training”. Agora passamos estes detalhes (URL,username,password) como parâmetros ao método getConnection da classe DriverManager. Ex: String DB_URL ="jdbc:odbc:training"; Connection conn= DriverManager.getConnection(url,username,password); A classe DriverManager controla todos detalhes para criar uma conexão à base de dados. O método getConection é o único do DriverManager que normalmente é necessário saber. A conexão devolvida pelo método DriverManager.getConnection é uma conexão aberta que podemos usar para criar objectos de JDBC Statements, que são usados para passar os Statements do SQL à base de dados. 1.3. Criar JDBC Statements O objecto do Statement é o que manda os Statements do SQL à base de dados. Só é necessário criar um objecto do Statement e depois executar o método apropriado. Os métodos são os seguintes: • executeQuery – para um Statement do SELECT • executeUpdate – para um Statement para criar ou modificar uma tabela Página 4 de 10
  • 5. É necessário uma instância de uma conexão aberta para criar o objecto do Statement. No exemplo seguinte, é usado o objecto da Connection conn (criada acima). Statement stmt=conn.createStatement(); Assim sendo, stmt existe, mas não tem um Statement do SQL para passar à base de dados. É imperioso que forneça o método que se pretende usar. Ex: stmt.executeUpdate("UPDATE …”); stmt.executeQuery("SELECT …”); 1.3.1. executeUpdate O método executeUpdate é usado para criar ou modificar uma tabela. Quando usado com SQL Statements como INSERT, UPDATE ou DELETE, devolve um int de row count (nº de linhas criadas/alteradas). Quando usado com SQL Statements de DDL (Data Definiton Language), ex CREATE, MODIFY, devolve só 0. Ex: stmt.executeUpdate(“UPDATE people SET age=21 WHERE name LIKE ‘zacaza’”) 1.3.2. executeQuery O método executeQuery é usado para seleccionar dados de uma tabela. Devolve um objecto ResultSet. Este é um objecto que representa os dados encontrados pelo SELECT. 1.4. Obter Resultados de objectos ResultSet O ResultSet tem os dados organizados em filas, como quando se executa um select no cliente da base de dados. O objecto ResultSet tem um cursor que aponta à linha actual de dados. Página 5 de 10
  • 6. Ex: ResultSet rs=stmt.executeQuery("SELECT id, name, age FROM people"); 1.4.1. Método next() Inicialmente o cursor é colocado antes da primeira fila. O método next move o cursor até a próxima linha. A linha actual do cursor é a linha em que pode actuar. NB: Quando o ResultSet só tem uma linha, tem que se chamar next primeiro para acessá-lo. E porque o método next devolve false quando não há mais filas no objecto ResultSet, poderá ser usado num ciclo while para iterar através do ResultSet. Ex: while (rs.next()){ //actuar em linha acutal } 1.4.2. Método getXXX Para ler dados da linha actual, o ResultSet tem vários métodos em forma de getXXX. Usa-se o método apropriado para o tipo de valor que queremos obter. Alguns exemplos: Tipo de Valor em BD Nome do Método Tipo de valo em JAVA Varchar getString() java.lang.String Numeric getInt() Int Date getDate() java.sql.Date Estes métodos aceitam como parâmetros o nome da coluna (String) ou índice da coluna(int). Ex: String name=rs.getString(“name”); int age=rs.getInt(2); Página 6 de 10
  • 7. 1.5. Excepções O método Class.forName lança um ClassNotFoundException Os métodos de JDBC lançam SQLExceptions. O tratamento de exepções é feito pelos blocos try e catch e tratá-los apropradamente. E útil imprimir os erros, assim saber-se-á porque o código não terá eventualmente funcionado. 1.6. Limpar recursos Quando se abre uma conexão à base de dados, cria-se uma conexão aberta na base de dados. É da responsabilidade do programador fechar esta conexão quando se chega ao término. Também é necessário fechar o ResultSet e Statement. rs.close(); stmt.close(); conn.close(); É aconselhável fechar os recursos dentro do bloco finally porque também quando o código inteiro lançar excepções, é necessário limpar recursos. Note que estes métodos para fechar também podem lançar excepções. 1.7. Um exemplo inteiro /* * Created on 5/Abr/2007 * * TODO To change the template for this generated file go to * Window - Preferences - Java - Code Style - Code Templates */ package jdbc; /** * @author mazibe * Página 7 de 10
  • 8. * TODO To change the template for this generated type comment go to * Window - Preferences - Java - Code Style - Code Templates */ import java.sql.*; public class JDBCExample { public static final String USERNAME ="admin"; public static final String PASSWORD ="password"; public static final String DB_URL ="jdbc:odbc:training"; public static void main(String args[]) throws ClassNotFoundException { //Carregar o JDBC-ODBC Driver Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection conn=null; Statement stmt=null; ResultSet rs=null; try{ //Obter uma connexão do Driver Manager conn= DriverManager.getConnection(DB_URL,USERNAME,PASSWORD); //Criar um Statement object para que possamos submeter SQL Statements ao Driver stmt=conn.createStatement(); //Submeter a query, criando um objecto ResultSet rs=stmt.executeQuery("SELECT name, age FROM people"); //Mostrar o conteúdo do ResultSet while (rs.next()){ int id = rs.getInt("id"); String name=rs.getString("name"); int age = rs.getInt("age"); System.out.println("id: "+id+", name: "+name+", age: "+age); } } catch (SQLException e){ System.out.println("SQLException in connectiong to a database or making query:n"+e); } finally { try { //Fechar o ResultSet Página 8 de 10
  • 9. if (rs !=null) rs.close(); //Fechar o Statement if (stmt !=null) stmt.close(); //Fechar a conexão if (conn !=null) conn.close(); }catch(SQLException e) { System.out.println("could not close resources"); } } } } 1.8. Exercícios 1) Copie o exemplo acima e verifique se corre. 2) Escreva o pseudocódigo usando as frases seguintes, para conectar e correr uma query à base de dados o Obter conexão à base de dados o Carregar o Driver o Fechar recursos o Executar statement o Instanciar o Driver o Criar statement o Ler ResultSet 3) a) Crie uma nova classe com o método main. b) Crie uma conexão à base de dados training e obtenha o objecto Statement. c) Qual o método que será usado para fazer um insert? d) Crie uma nova entrada na tabela people com o seu nome, cidade e idade. Página 9 de 10
  • 10. e) Abra a base de dados em MS Access e veja se funcionou. 4) f) Edite a classe criada no exercício nº 3) para ler os parâmetros do método main. g) Corra o main algumas vezes, variando os parâmetros, e verifique na base de dados. 5) Agora queremos fazer uma query à base de dados para ler a idade, por exemplo, e por cada linha faça um update, por exemplo para aumentar a idade em uma unidade. Edite o pseudocódigo escrito na pergunta 2). 6) a) Crie uma nova classe com o método main e crie uma conexão à base de dados training b) Desta vez crie 2 objectos do Statement. c) Com o primeiro seleccione a chave e a idade da tabela people. d) Usando o segundo objecto do Statement, para cada linha do resultado, faça um update para aumentar a idade em uma unidade. e) Verifique se os dados da base de dados alteraram. Página 10 de 10