Aula01-banco de dados e JDBC.pdf

Embed Size (px)

Citation preview

  • 7/26/2019 Aula01-banco de dados e JDBC.pdf

    1/22

    Bancos de dados e JDBC

    Esta aula tem como objetivo

    apresentar:

    Plano de ensino

    Banco de dados com JDBC

    Estratgia de trabalho: aula

    expositiva dialogada e exerccios.

    Prof. Fabiano Madeira

    Aula 01

  • 7/26/2019 Aula01-banco de dados e JDBC.pdf

    2/22

    Bancos de dados e JDBC

    Ao trmino dessa aula voc ser capazde:

    conectar-se a um banco de dadosqualquer atravs da API JDBC;

    criar uma fbrica de conexes usando odesign pattern Factory;

    pesquisar dados atravs de queries;Prof. Fabiano Madeira

  • 7/26/2019 Aula01-banco de dados e JDBC.pdf

    3/22

    POR QUE USAR UM BANCO DE DADOS?

    Sistemas usam bancos de dados parapermitir consultas futuras, gerao de

    relatrios e alteraes nas informaes. Informaes devem ser mantidas

    organizadas e prontas para consultas.

    A maioria dos bancos de dados sochamados relacionais.

    Prof. Fabiano Madeira

  • 7/26/2019 Aula01-banco de dados e JDBC.pdf

    4/22

    POR QUE USAR UM BANCO DE DADOS?

    Usaremos o MySQL.

    gratuito, fcil de instalar.

    Fcil de acessar. O processo de armazenamento de

    dados chamado de persistncia. A biblioteca de persistncia do Java

    chamada de JDBCProf. Fabiano Madeira

  • 7/26/2019 Aula01-banco de dados e JDBC.pdf

    5/22

    A CONEXO EMJAVA

    Temos um conjunto de interfacesdentro do pacote java.sql.

    a interface Connection define mtodospara executar queries, comitar atransao e fechar a conexo.

    As classes concretas so chamadas dedriver.

    Prof. Fabiano Madeira

  • 7/26/2019 Aula01-banco de dados e JDBC.pdf

    6/22

    A CONEXO EMJAVA

    Todos os principais bancos de dadospossuem drivers JDBC para utilizarmos

    com Java.

    Prof. Fabiano Madeira

  • 7/26/2019 Aula01-banco de dados e JDBC.pdf

    7/22

    A CONEXO EMJAVA

    A classe DriverManager a responsvelpor se comunicar com todos os drivers.

    Usamos o mtodo getConnection comuma String que indica a qual banco nosconectar.

    jdbc:mysql://ip/nome_do_banco

    Prof. Fabiano Madeira

  • 7/26/2019 Aula01-banco de dados e JDBC.pdf

    8/22

    A CONEXO EMJAVA

    public class JDBCExemplo {public static void main(String[] args) throws

    SQLException {

    Connection conexao = DriverManager.getConnection("jdbc:mysql://localhost/impacta");

    System.out.println("Conectado!");

    conexao.close();

    }

    }

    Prof. Fabiano Madeira

  • 7/26/2019 Aula01-banco de dados e JDBC.pdf

    9/22

    A CONEXO EMJAVA

    Devemos tratar a SQLException

    Precisamos sempre para fechar todas as

    conexes que foram abertas. Ao testar o cdigo anterior, recebemos

    uma exception.

    java.sql.SQLException: No suitable driverfound for jdbc:mysql://localhost/impact

    Prof. Fabiano Madeira

  • 7/26/2019 Aula01-banco de dados e JDBC.pdf

    10/22

    A CONEXO EMJAVA

    O sistema precisa do driver JDBC paraabrir a conexo.

    Precisamos adicionar o driver do MySQLaoclasspath, o arquivo .jar JDBC doMySQL precisa ser colocado no projeto.

    Prof. Fabiano Madeira

  • 7/26/2019 Aula01-banco de dados e JDBC.pdf

    11/22

    FBRICA DECONEXES

    Precisamos ter o controle sobre aconstruo dos objetos da nossa classe.

    Controlar como abrir uma conexo como banco de dados.

    Prof. Fabiano Madeira

  • 7/26/2019 Aula01-banco de dados e JDBC.pdf

    12/22

    FBRICA DECONEXES

    public class ConnectionFactory {public Connection getConnection() {

    try {

    return DriverManager.getConnection("jdbc:mysql://localhost/impacta", "root", "senha");

    } catch (SQLException e) {

    throw new RuntimeException(e);}

    }

    }Prof. Fabiano Madeira

  • 7/26/2019 Aula01-banco de dados e JDBC.pdf

    13/22

    FBRICA DECONEXES

    Connection con = newConnectionFactory().getConnection();

    O mtodo getConnection() umafbrica de conexes.

    Basta invocar o mtodo e recebemosuma conexo pronta, no importa deonde ela veio.

    Prof. Fabiano Madeira

  • 7/26/2019 Aula01-banco de dados e JDBC.pdf

    14/22

    FBRICA DECONEXES

    Vamos sempre chamar a classede ConnectionFactory e o mtodo de

    getConnection. Dessa forma, podemos mudar a

    obteno de conexes, para, usar um

    pooling, sem reescreve-las.

    Prof. Fabiano Madeira

  • 7/26/2019 Aula01-banco de dados e JDBC.pdf

    15/22

    DESIGNPATTERNS

    Uma soluo padro para problemasconhecidos tem o nome de Design

    Pattern (Padro de Projeto). A ConnectionFactory implementa o

    design pattern Factory que prega o

    encapsulamento da construo deobjetos complicados.

    Prof. Fabiano Madeira

  • 7/26/2019 Aula01-banco de dados e JDBC.pdf

    16/22

    EXERCCIOS: CONNECTIONFACTORY

    1. Abra o Eclipse Vamos criar um projeto no Eclipse chamado aula-jdbc.

    V em File -> New -> Project:

    Selecione Java Project e clique em Next: Coloque o nome do projeto como aula-jdbc e clique

    em Finish:

    Aceite a mudana de perspectiva:

    Prof. Fabiano Madeira

  • 7/26/2019 Aula01-banco de dados e JDBC.pdf

    17/22

    EXERCCIOS: CONNECTIONFACTORY

    2. Copie o driver do MySQL para o seu projeto. clique da direita no driver do MySQL mais novo,

    escolha Copy;

    entre no diretrio workspace, aula-jdbc; clique da direita e escolha Paste: voc acaba de

    colocar o arquivo ".jar" no seu projeto.

    Prof. Fabiano Madeira

  • 7/26/2019 Aula01-banco de dados e JDBC.pdf

    18/22

    EXERCCIOS: CONNECTIONFACTORY

    3. Vamos criar a classe que fabrica conexes: Clique em File -> New -> Class.

    Crie-a no pacote br.com.impacta.jdbc e nomeie-a

    como ConnectionFactory. Clique em Finish

    No cdigo, crie o mtodo getConnection que retornauma nova conexo. Quando perguntado, importe asclasses do pacote java.sql (cuidado para no importarNADA de com.mysql).

    Prof. Fabiano Madeira

  • 7/26/2019 Aula01-banco de dados e JDBC.pdf

    19/22

    EXERCCIOS: CONNECTIONFACTORY

    public Connection getConnection() {try {

    return DriverManager.getConnection(

    "jdbc:mysql://localhost/impacta", "root", "");} catch (SQLException e) {

    throw new RuntimeException(e);

    }}

    Prof. Fabiano Madeira

  • 7/26/2019 Aula01-banco de dados e JDBC.pdf

    20/22

    EXERCCIOS: CONNECTIONFACTORY

    4. Crie uma classe chamada TestaConexao nopacote br.com.impacta.jdbc.teste. Todas asnossas classes de teste devero ficar nesse

    pacote. Crie um mtodo main dentro da classe. Use o atalho

    do Eclipse para ajudar.

    Dentro do main, fabrique uma conexo usandoa ConnectionFactory que criamos. Vamos apenastestar a abertura da conexo e depois fech-la com omtodo close

    Prof. Fabiano Madeira

  • 7/26/2019 Aula01-banco de dados e JDBC.pdf

    21/22

    EXERCCIOS: CONNECTIONFACTORY

    Connection connection = newConnectionFactory().getConnection();System.out.println("Conexo aberta!");connection.close();

    Trate os erros com throws. ( Use: Ctrl + 1 e escolha"add throws declaration").

    Prof. Fabiano Madeira

  • 7/26/2019 Aula01-banco de dados e JDBC.pdf

    22/22

    EXERCCIOS: CONNECTIONFACTORY

    5. Rode a sua classe TestaConexao pelo Eclipse. Clique da direita na sua classe TestaConexao

    Escolha Run as, Java Application

    No funcionou pois esquecemos de colocar o JARno classpath! (Build Path no Eclipse)

    Selecione o seu driver do MySQL no projeto, clique da

    direita e escolha Build Path, Add to Build Path: Rode novamente sua aplicao TestaConexao agora

    que colocamos o driver no classpath.

    Prof. Fabiano Madeira