Como executar consultas SQL em Java?
Executar consultas SQL em Java é uma tarefa essencial para aplicações que manipulam dados armazenados em bancos relacionais. Utilizando JDBC (Java Database Connectivity), podemos interagir diretamente com bancos de dados, executando consultas SQL para recuperar, inserir, atualizar e excluir dados.
1. Criando uma Conexão com o Banco de Dados
Antes de executar consultas, precisamos estabelecer uma conexão com o banco de dados.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class ConexaoBanco {
private static final String URL = "jdbc:mysql://localhost:3306/meubanco";
private static final String USUARIO = "root";
private static final String SENHA = "1234";
public static Connection conectar() throws SQLException {
return DriverManager.getConnection(URL, USUARIO, SENHA);
}
}
Explicação: O método
conectar()
retorna um objetoConnection
para interagir com o banco de dados.
2. Executando Consultas com Statement
A interface Statement
permite executar consultas SQL diretamente.
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class ConsultaSQL {
public static void main(String[] args) {
try (Connection conexao = ConexaoBanco.conectar();
Statement stmt = conexao.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM usuarios")) {
while (rs.next()) {
System.out.println("Nome: " + rs.getString("nome"));
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
Explicação: O método
executeQuery()
executa um SELECT, retornando umResultSet
com os dados.
3. Utilizando PreparedStatement
para Evitar SQL Injection
O PreparedStatement
permite consultas parametrizadas, evitando SQL Injection.
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class ConsultaSegura {
public static void main(String[] args) {
String sql = "SELECT * FROM usuarios WHERE email = ?";
try (Connection conexao = ConexaoBanco.conectar();
PreparedStatement stmt = conexao.prepareStatement(sql)) {
stmt.setString(1, "usuario@email.com");
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
System.out.println("Nome: " + rs.getString("nome"));
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
Explicação: O
?
é substituído pelo parâmetro seguro, evitando ataques de SQL Injection.
4. Executando INSERT, UPDATE e DELETE
Para manipular registros, usamos executeUpdate()
.
String insertSql = "INSERT INTO usuarios (nome, email) VALUES (?, ?)";
try (Connection conexao = ConexaoBanco.conectar();
PreparedStatement stmt = conexao.prepareStatement(insertSql)) {
stmt.setString(1, "João Silva");
stmt.setString(2, "joao@email.com");
stmt.executeUpdate();
System.out.println("Usuário inserido com sucesso!");
} catch (SQLException e) {
e.printStackTrace();
}
Explicação:
executeUpdate()
executa consultas que modificam dados, comoINSERT
,UPDATE
eDELETE
.
Conclusão
O JDBC permite executar consultas SQL em Java de maneira eficiente. O uso de PreparedStatement
melhora a segurança, prevenindo SQL Injection e tornando o código mais organizado.
Por que aprender JDBC é essencial para quem trabalha com banco de dados em Java?
A execução de consultas SQL em Java é a base para muitas aplicações empresariais. Bancos de dados relacionais armazenam informações críticas para sistemas financeiros, de e-commerce e CRMs. Aprender a manipular dados corretamente com JDBC ajuda a construir sistemas mais seguros e performáticos.
Algumas aplicações:
- Recuperação e manipulação de dados em bancos SQL
- Desenvolvimento de aplicações empresariais
- Integração com APIs que utilizam persistência de dados
- Automação de tarefas que envolvem grandes volumes de dados
Dicas para quem está começando
- Use
PreparedStatement
para evitar SQL Injection - Sempre feche
Connection
,Statement
eResultSet
após o uso - Prefira DataSource para gerenciar conexões em aplicações maiores
- Monitore logs de consultas para identificar problemas de desempenho
- Evite consultas desnecessárias e otimize índices do banco
Contribuições de Rodrigo Farias