Back-End

22 mai, 2009

Criando conexão Java + BD

Publicidade

No artigo de hoje vou mostrar como conectar uma classe Java com um BD. Nesse caso, vamos usar o MySQL.

Quando iniciei meus estudos eu sempre tive as seguintes dúvidas:

  • como conectar uma class java com um BD?
  • será que essa minha simples classe “Hello World” poderia conectar ao um BD? Ou é preciso de algo mais complexo?

Bem, a partir disso, pensei: “Que tal ajudar aqueles que estão iniciando com java e mostrar como é simples fazer uma conexão com BD em Java e ajudar os colegas que desejam brincar com outros BD, mas ainda não tiveram coragem de fazer a migração?”.

Lets go…

Leitura recomendada:

Exceções Java

Nota: Irei explicar apenas pontos cruciais para funcionamento. Assuntos relacionados a conceitos básicos do java e eclipse, como importação, encapsulamento etc ,criar projeto no eclipse, criar nova classe, compilar etc., não serão abordados. Outro detalhe importante: muitas das explicações estão no código no formato de comentário, isso para que o artigo não fique muito grande e que você entenda o que está sendo explicado com o código do lado.

Requisitos:

  • Eclipse: IDE
  • Mysql 5.0 : Instale no modo padrão, ou seja, siga a instalação sem mudar nada, não esqueça da senha de root (ou use o BD que você deseja)
  • Connector MySql (MySQL Connector/J — for connecting to MySQL from Java): para instalação, descompacte o arquivo mysql-connector-java-5.1.7-bin.jar em LOCAL_INSTALACAO_JAVA_NA_SUA_MAQUINA\Java\jdk1.5.0\jre\lib\ext . Na minha máquina: C:\Program Files\Java\jdk1.5.0\jre\lib\ext
  • Acesse o site do BD que você vai quere testar e busque o Conector.
  • Java 1.5/superior
  • GUI Mysql Tool: muito bom para executar comandos sql. É opcional baixá-lo, mas eu recomendo, pois digitar comando sql via prompt não é tão legal quanto usar o GUI. Esse deve ser instalado após instalação do mysql (Single bundle including all GUI tools MySQL Administrator, MySQL QueryBrowser, MySQL MigrationToolkit and MySQL Workbench) . Veja se o BD que você vai utilizar oferece alguma ferramenta desse tipo.

Outros BD:

Banco de
dados
Caminho do Driver JDBC  String de Conexao
PostgreSql Org.postgresql.Driver jdbc:postgresql://<servidor>:<porta>/<banco>
Sql
Server
Com.microsoft.jdbc.sqlserver.SQLServerDriver Jdbc:microsoft:sqlserver://<servidor>:<porta>
Oracle Criar objeto OracleDataSource Jdbc:oracle:thin:<usuario>/<senha>@<servidor>:<porta>:<servico>
BD2 Com.ibm.db2.jcc.DB2Driver Jdbc:db2:<banco>
Progress Com.progress.sql.jdbc.JdbcProgresseDriver Jdbc:jdbcprogress:T:<servidor>:<porta>:<banco>

Um detalhe importante para quem for usar BD da Oracle é que este JDBC não necessita da chamada Class.forName() para carregar o driver na memória. Segundo a documentação do driver, basta criar um objeto do tipo OracleDataSource. Veja a seguir como ficaria seu código:

String url  = new String("jdbc:oracle:thin:<usuario>/<senha>@<servidor>:<porta>:<servico>");

OracleDataSource ds = new OracleDataSource();

ds.setURL(url);

Connection com = ds.getConnection();

Statement st = com.createStatement();

ResultSet rs = st.executeQuery("Select * from usuarios");

Aqui está nosso cenário. Teremos duas classes: 1. para conexão com o BD; 2. uma class que testa a conexão.

  1. crie um projeto no eclipse e dê um nome, aqui vamos chamá-lo de usuário
  2. agora clique com o botão direito do mouse sobre o projeto e vamos adicionar o connector mysql. Como o próprio nome já diz, o conector é que vai fazer sua app (aplicação) “conversar com o BD”.
  3. Agora clique no botão a esquerda ADD External JARs e, em seguida, informe o caminho que está o conector.
  4. Após adicionar o conector basta dar um clique no botão ok. Sua tela deve ser semelhante a essa:
  5. Crie uma classe sem o método main e chame esta de conexão (conexao.java)

Essa será a classe responsável por estabelecer a conexão com BD.

package aula2;
/* a seguir faco as importacoes da classe no pacote sql */
import java.sql.*;

public class Conexao {

static String status=""; //variavel que vai informar o status da conexao

public static Connection getConnection(){
Connection conn=null; //crio uma variavel para conexao
try{
/*Aqui é o driver do Mysql, porem cada BD tem o seu, entao se vc amanha pensar usar outro BD, tem que ver na documentação
* com a linha a seguir estamos carregando o Driver para conexao*/

Class.forName("com.mysql.jdbc.Driver").newInstance();

/* ponto importante se usar um usuario diferente de root, verifique os privilegios deste com o BD.
* vc pode usar o Mysql administration e logar como root e ver os privilegios*/
//a url é de acordo com a documentacao do driver, se for usar outro BD ver na documentacao

String url = "jdbc:mysql://localhost/test?user=lopes&password=123";
conn = DriverManager.getConnection(url);

//se ocorrer tudo bem, ou seja, se conectar a linha a segui é executada
status = "Connection opened";}
catch (SQLException e) {
status = e.getMessage(); // a variavel status vai receber a string da exceção
}catch (ClassNotFoundException e) {
status = e.getMessage();

}catch(Exception e){
status = e.getMessage();}
return conn;}}

- Tanto a linha de obter o Driver quanto de obter a conexão deve ser inserida dentro do um
bloco try/catch, pois as classes de .sql sao exceções verificadas.

06. Para criar um usuário basta abrir MySQL  Administrator e logar como root.

07. Agora vamos criar nosso Schema. Se você está usando MySQL Query Browser (GUI). Ele vai pedir um usuário, use o root e deixe a tela com a seguir:(coloque sua senha e clique em ok)

08. agora crie as tabelas usando o comando sql.

09. a seguir, o comando sql, ou, usando o GUI, clique com o botão direito a direita e escolha Create Table (Isso para Mysql). Mas você pode digitar o comando a seguir.

create table usuarios ( 
nome varchar(50) NOT NULL default ') ;

10. não iremos trabalhar com a tabela acima, por enquanto.

11. agora crie a classe a seguir para testar a conexão.

package aula2;

public class Iniciar {

public static void main(String[] args) {
Conexao.getConnection();
System.out.println(Conexao.status); //imprime o valor de status
/* se a conexao falhar veremos pelo status */

}}

12. compile a classe. Não se esqueça de certificar se o Mysql (ou o seu BD) está executando.

Se tudo ocorrer como planejado você deve ter uma mensagem como a seguinte na tela de output do eclipse:

Vou ficando por aqui e espero que tenham gostado do post. Abraço a todos e até a próxima.