Conectando-se ao MySQL usando driver JDBC

Neste tutorial, você aprenderá como se conectar ao banco de dados MySQL usando o objeto JDBC Connection.

Para se conectar ao banco de dados MySQL a partir de um programa Java, você precisa seguir as seguintes etapas:

  1. Carregue o MySQL Connector/J em seu programa.
  2. Crie um novo objeto Connection da DriverManagerclasse. Então você pode usar este objeto Connection para executar consultas.

Carregando MySQL Connector/J em seu programa

Para carregar o MySQL Connector/J em seu programa, siga as três etapas abaixo:

Primeiro, no NetBeans IDE, no nome do projeto, clique com o botão direito do mouse e escolha o item de menu de propriedades. A caixa de diálogo de propriedades do projeto aparecerá.

propriedades do projeto mysql jdbc

Segundo, no lado esquerdo da caixa de diálogo de propriedades do projeto, na seção Categorias, escolha o item Bibliotecas.

mysql jdbc escolher biblioteca

Terceiro, clique no botão Adicionar pasta JAR, navegue até o local onde você instalou o MySQL Connector/J e escolha o arquivo JAR conforme imagem abaixo; depois disso, clique no botão OK.

mysql jdbc adicionar jar
arquivo jar adicionado

Conectando ao banco de dados MySQL

Primeiro, você precisa importar três classes: SQLException, DriverManager e Connection do pacote java.sql.*.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;Linguagem de código:  Java  ( java )

Segundo, você chama o método getConnection() da classe DriverManager para obter o objeto Connection. Existem três parâmetros que você precisa passar para o método getConnection():

  1. url: o URL do banco de dados no formato jdbc:subprotocol:subname. Para MySQL, você usa jdbc:mysql://localhost:3306/mysqljdbc, ou seja, você está se conectando ao MySQL com nome de servidor localhost, porta 3006 e banco de dados mysqljdbc.
  2. user: o usuário do banco de dados que será usado para conectar-se ao MySQL.
  3. senha: a senha do usuário do banco de dados.
Connection conn = null;
try {
    // db parameters
    String url       = "jdbc:mysql://localhost:3306/mysqljdbc";
    String user      = "root";
    String password  = "secret";
	
    // create a connection to the database
    conn = DriverManager.getConnection(url, user, password);
    // more processing here
    // ...	
} catch(SQLException e) {
   System.out.println(e.getMessage());
} finally {
	try{
           if(conn != null)
             conn.close()
	}catch(SQLException ex){
           System.out.println(ex.getMessage())
	}
}Linguagem de código:  Java  ( java )

Ao conectar-se ao MySQL, tudo pode acontecer, por exemplo, o servidor de banco de dados não está disponível, nome de usuário ou senha incorretos, etc. Nesses casos, o JDBC lança uma SQLException. Portanto, ao criar um objeto Connection, você deve sempre colocá-lo dentro de um bloco try-catch. Além disso, você deve sempre fechar a conexão com o banco de dados depois de concluir a interação com o banco de dados chamando o close()método do objeto Connection.

No Java 7, existe outra instrução interessante chamada try-with-resources que permite simplificar o código acima da seguinte maneira:

// db parameters
String url       = "jdbc:mysql://localhost:3306/mysqljdbc";
String user      = "root";
String password  = "secret";

Connection conn = null;

try(conn = DriverManager.getConnection(url, user, password);) {
	// processing here
} catch(SQLException e) {
   System.out.println(e.getMessage());
}Linguagem de código:  Java  ( java )

Ele chama automaticamente o método close() do objeto Connection assim que o programa termina. Como você pode ver, é mais limpo e elegante. No entanto…

Não é seguro nem flexível quando você codifica os parâmetros do banco de dados dentro do código, como acima. Caso você altere o servidor de banco de dados ou senha; você precisa alterar o código e compilá-lo novamente, o que não é um bom design.

Para evitar a codificação permanente de todos os parâmetros do banco de dados no código, é possível usar um arquivo de propriedades Java para armazená-los. Em caso de alterações, basta alterá-las no arquivo de propriedades e não é necessário recompilar o código.

Vamos dar uma olhada no arquivo de propriedades chamado db.properties:

# MySQL DB parameters
user=root
password=secret
url=jdbc:mysql://localhost:3306/mysqljdbcLinguagem de código:  PHP  ( php )

Você pode reescrever o código para criar um objeto Connection com parâmetros de um arquivo de propriedades da seguinte maneira:

Connection conn = null;

try(FileInputStream f = new FileInputStream("db.properties")) {
    // load the properties file
    Properties pros = new Properties();
    pros.load(f);

    // assign db parameters
    String url       = pros.getProperty("url");
    String user      = pros.getProperty("user");
    String password  = pros.getProperty("password");
    // create a connection to the database
    conn = DriverManager.getConnection(url, user, password);
} catch(IOException e) {
   System.out.println(e.getMessage());
} finally {
    try{
        if(conn != null)
            conn.close();
    }catch(SQLException ex){
        System.out.println(ex.getMessage());
    }
    
}Linguagem de código:  Java  ( java )

Para cada interação com o banco de dados MySQL, é necessário criar uma nova conexão. Você teria o mesmo código para fazer isso em todos os lugares. Em vez de fazer isso, você pode criar uma nova classe para lidar com a criação de conexões:

package org.mysqltutorial;

import java.io.FileInputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;

/**
 *
 * @author tutorials.acervolima.com
 */
public class MySQLJDBCUtil {

    /**
     * Get database connection
     *
     * @return a Connection object
     * @throws SQLException
     */
    public static Connection getConnection() throws SQLException {
        Connection conn = null;

        try (FileInputStream f = new FileInputStream("db.properties")) {

            // load the properties file
            Properties pros = new Properties();
            pros.load(f);

            // assign db parameters
            String url = pros.getProperty("url");
            String user = pros.getProperty("user");
            String password = pros.getProperty("password");
            
            // create a connection to the database
            conn = DriverManager.getConnection(url, user, password);
        } catch (IOException e) {
            System.out.println(e.getMessage());
        }
        return conn;
    }

}Linguagem de código:  Java  ( java )

No próximo tutorial, usaremos esta MySQLJDBCUtilclasse para criar uma nova conexão com o MySQL da seguinte forma:

package org.mysqltutorial;

import java.sql.Connection;
import java.sql.SQLException;

/**
 *
 * @author tutorials.acervolima.com
 */
public class Main {

    public static void main(String[] args) {
        // create a new connection from MySQLJDBCUtil
        try (Connection conn = MySQLJDBCUtil.getConnection()) {
            
            // print out a message
            System.out.println(String.format("Connected to database %s "
                    + "successfully.", conn.getCatalog()));
        } catch (SQLException ex) {
            System.out.println(ex.getMessage());
        }
    }
}Linguagem de código:  Java  ( java )

Neste tutorial, mostramos passo a passo como conectar-se ao MySQL usando o objeto JDBC Connection e usar um arquivo de propriedades para armazenar parâmetros do banco de dados. No final do tutorial, desenvolvemos uma classe utilitária que você pode reutilizar sempre que criar uma conexão com o banco de dados.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *