Mostrando postagens com marcador consulta. Mostrar todas as postagens
Mostrando postagens com marcador consulta. Mostrar todas as postagens

terça-feira, 16 de outubro de 2012

Conectando em um banco de dados com java

 

 

Introdução


O banco de dados hoje em dia é a principal fonte de informação de qualquer impresa hoje em dia.
Hoje vamos ver de maneira simples como se faz um programa java para conectar à um banco de dados (postgresql) e utilizar os dados requiridos pelo mesmo.
Para manipular dados de um banco de dados é necessário seguir alguns passo:


1º Obter conexão

Para efetivar  uma conexão ao banco de dados é necessário utilizar a classe DriverManeger e utilizar seu método getConnection e informar a url para conectar ao banco de dados, abaixo é possível ver um exemplo de método que obtenção de conexão em um banco de dados postgresql:


public Connection getConnection() throws SQLException {
        Connection con = null;
        con = DriverManager
                .getConnection("jdbc:postgresql://localhost/agenda_telefone?user=postgres&password=postgres");

        return con;
}



Para criar uma conexão em banco de dados postgresql é necessário que se adicione ao seu projeto o arquivo .jar ao projeto:
Abaixo é possível ver o trecho responsável por conectar a um banco de dados postgresql:

con = DriverManager    .getConnection("jdbc:postgresql://localhost/agenda_telefone?user=postgres&password=postgres");

A sintaxe básica para utilizar a linha acima é:

jdbc://nome_banco://host/banco_dados?user=usuario&password=password


Onde:

•    nome_banco – Tipo de banco de dados que está sendo utilizado (postgresql/mysql/oracle).

•    banco_dados – Banco de dados que iremos utilizar.

•    user -  Usuário utilizado para conectar ao banco e dados.

•    password – Senha do usuário para conectar ao banco de dados.


Caso sua aplicação deseja-se conecatar ao mysql um exemplo seria:

jdbc:mysql://localhost/agenda_telefone?user=postgres&password=postgres


2º Executar a query

Para executar uma query em java é utilizar a clausula PrepareStatement e a mesma será explicada através do método removePessoa.


Abaixo é possível ver o método removePessoa

    public boolean removePessoa(Pessoa pessoa) throws SQLException {
        Connection con = null;
      String DELETE_PESSOA = "DELETE FROM telefones WHERE pes_id = ?;DELETE     FROM pessoas WHERE pes_id = ?;";
       try {
            con = getConnection();
            PreparedStatement prepared = con.prepareStatement(DELETE_PESSOA);
            prepared.setLong(1, pessoa.getId());
            prepared.setLong(2, pessoa.getId());

            retorno = prepared.execute();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            closeConnnection(con);
        }
        return retorno;

    }


Neste metodo logo que é adquirida uma conexão é instanciado um objeto do tipo PreparedStatement , esse objeto tem como principal objetivo adquirir a query e os parametros caso algum for necessário bem como executar a query e dar um retorno, no caso desta classe é apenas retornado um  boolean informado se query foi executado com sucesso.

A query é passada ao objeto através da linha:

PreparedStatement prepared = con.prepareStatement(DELETE_PESSOA);

Os paramtros são passados através das linhas:

prepared.setLong(1, pessoa.getId());
prepared.setLong(2, pessoa.getId());


Vale salientar que para cada tipo de parametro passado é utilizado um tipo de set dentro do PreparedStatement , caso fosse String por exemplo seria utilizado um prepared.setString.

A sintaxe para passagem de parametro é a seguinte:

    objeto_prepared.set_Tipo_OBJETO(posical_query, objeto);

Onde:

•    objeto_prepared – Objeto do tipo PreparedStatement.

•    set_Tipo_OBJETO -  Tipo de objeto a ser inserido como parametro.

•  posicao_query – Posição do parametro na query, sendo que é dado inicio no parametro 1.

•    objeto – Objeto a ser adicionado como parametro


Exemplo de passagem de paramtro

String query =” SELECT * FROM PESSOAS WHERE PES_ID= ? AND PES_NOME = ?”
...
prepared.setLong(1, pessoa.getId()) ;  //Passando um long como parametro
prepared.setString(2, pessoa.getNome()); // Passando uma String como parametro.

Neste exemplo o primeiro interrogação (?) será substituido pelo valor de pessoa.getId() e o segundo pelo valor de pessoa.getNome().


Para obter parametros de uma consulta feita no banco de dados além do objeto do tipo PreparedStatement é necessário utiliar um  do tipo ResultSet que pode ser encontrado no método selectTelefones.

Método selectTelefones


    public List selectTelefones(Telefone telefone)
            throws SQLException {
        Connection con = null;
        List listTelefone = new ArrayList();
        try {
            con = getConnection();
            PreparedStatement prepared = con.prepareStatement(SELECT_TELEFONE);
            prepared.setString(1, telefone.getNumero());
            ResultSet resultSet = prepared.executeQuery();

            while (resultSet.next()) {
                Telefone telefoneTmp = new Telefone();
                telefoneTmp.setId(resultSet.getLong("TEL_ID"));
                telefoneTmp.setNumero(resultSet.getString("TEL_NUMERO"));
                listTelefone.add(telefoneTmp);
            }

        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            closeConnnection(con);
        }
        return listTelefone;

    }


O objeto do tipo ResultSet é obtido na linha:

ResultSet resultSet = prepared.executeQuery();
Para obter os valores contidos no ResultSet é necessário utilizar a seguinte sintaxe:

Sintaxe:

            while (resultSet.next()) {
                variavel = resultSet.get_Tipo_OBJETO("NOME_COLUNA"));
            }

Onde:

•    variavel – Variavel que guardará o valor obtetido através do resultSet.

•    get_Tipo_OBJETO – Tipo de objeto a ser obtido da coluna da tabela.

•    NOME_COLUNA – Nom da coluna que será adquirido o valor que será guardado na variavel.


Abaixo é possíve ver um exemplo contido no próprio programa.


...
            ResultSet resultSet = prepared.executeQuery();

            while (resultSet.next()) {
                Telefone telefoneTmp = new Telefone();
                telefoneTmp.setId(resultSet.getLong("TEL_ID"));
                telefoneTmp.setNumero(resultSet.getString("TEL_NUMERO"));
                listTelefone.add(telefoneTmp);
            }


Observação: O nome das colunas foram definidos no momento que fora criada as tabelas do banco de dados.

3º Fechar a conexão


Assim com um arquivo aberto deve ser fechado, uma conexão aberta também deve ser fachada, para isso é necessári o utilizar o método close.

Abaixo é possível ver um método utilzado para fechar uma conexão do tipo Connection.

public void closeConnnection(Connection con) {
        try {
            con.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }




Conclusão

Como foi possível ver ao longo do post, a aquisição e utilização de dados de um banco de dados pode vir a ser bem simples.