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.