Como executar consultas SQL em Java?

Executar consultas SQL em Java com JDBC permite manipular dados de um banco de dados de forma segura e estruturada.

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 objeto Connection 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 um ResultSet 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, como INSERT, UPDATE e DELETE.

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.

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 e ResultSet 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

Compartilhe este tutorial: Como executar consultas SQL em Java

Compartilhe este tutorial

Continue aprendendo:

Como conectar Java a um banco de dados MySQL/PostgreSQL

A conexão entre Java e bancos de dados MySQL/PostgreSQL é feita através do JDBC, utilizando drivers específicos para cada banco.

Tutorial anterior

O que é JDBC e como utilizá-lo

O JDBC (Java Database Connectivity) é uma API que permite a comunicação entre aplicações Java e bancos de dados relacionais.

Próximo tutorial