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:
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.
- crie um projeto no eclipse e dê um nome, aqui vamos chamá-lo de usuário
- 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”.
- Agora clique no botão a esquerda ADD External JARs e, em seguida, informe o caminho que está o conector.
- Após adicionar o conector basta dar um clique no botão ok. Sua tela deve ser semelhante a essa:
- 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.