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:
- Carregue o MySQL Connector/J em seu programa.
- Crie um novo objeto Connection da
DriverManager
classe. 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á.
Segundo, no lado esquerdo da caixa de diálogo de propriedades do projeto, na seção Categorias, escolha o item Bibliotecas.
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.
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():
- 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.
- user: o usuário do banco de dados que será usado para conectar-se ao MySQL.
- 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/mysqljdbc
Linguagem 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 MySQLJDBCUtil
classe 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.