JDBC y Acceso a Bases de Datos

Introducción a JDBC

JDBC es una API de Java que proporciona métodos para conectarse y ejecutar consultas en una base de datos desde una aplicación Java.

Conexión a la Base de Datos

Para conectarse a una base de datos utilizando JDBC, primero necesitas cargar el driver de la base de datos y luego establecer la conexión.

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

public class ConexionJDBC {
    public static void main(String[] args) {
        // Parámetros de conexión
        String url = "jdbc:mysql://localhost:3306/mi_base_de_datos";
        String usuario = "usuario";
        String contraseña = "contraseña";

        // Cargar el driver
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            System.out.println("Error al cargar el driver de la base de datos");
            e.printStackTrace();
            return;
        }

        // Establecer la conexión
        try (Connection conexion = DriverManager.getConnection(url, usuario, contraseña)) {
            System.out.println("Conexión exitosa a la base de datos");
        } catch (SQLException e) {
            System.out.println("Error al establecer la conexión");
            e.printStackTrace();
        }
    }
}

				
			

Ejecución de Consultas

Una vez establecida la conexión, puedes ejecutar consultas SQL utilizando Statement, PreparedStatement o CallableStatement.

				
					import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class ConsultasJDBC {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/mi_base_de_datos";
        String usuario = "usuario";
        String contraseña = "contraseña";

        try (Connection conexion = DriverManager.getConnection(url, usuario, contraseña)) {
            Statement statement = conexion.createStatement();
            String sql = "SELECT * FROM tabla";
            ResultSet resultado = statement.executeQuery(sql);

            while (resultado.next()) {
                // Procesar resultados
                int id = resultado.getInt("id");
                String nombre = resultado.getString("nombre");
                System.out.println("ID: " + id + ", Nombre: " + nombre);
            }
        } catch (SQLException e) {
            System.out.println("Error al ejecutar la consulta");
            e.printStackTrace();
        }
    }
}

				
			

Cierre de la Conexión

Es importante cerrar la conexión, los statements y los resultados después de utilizarlos para liberar los recursos.

				
					try (Connection conexion = DriverManager.getConnection(url, usuario, contraseña);
     Statement statement = conexion.createStatement();
     ResultSet resultado = statement.executeQuery(sql)) {
    // Procesamiento de resultados
} catch (SQLException e) {
    // Manejo de excepciones
}

				
			

Conexión a bases de datos

La conexión a una base de datos en Java se realiza utilizando JDBC (Java Database Connectivity). Aquí tienes un ejemplo básico de cómo establecer una conexión a una base de datos MySQL:

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

public class ConexionBD {
    public static void main(String[] args) {
        // Parámetros de conexión
        String url = "jdbc:mysql://localhost:3306/mi_base_de_datos";
        String usuario = "usuario";
        String contraseña = "contraseña";

        // Establecer la conexión
        try {
            Connection conexion = DriverManager.getConnection(url, usuario, contraseña);
            System.out.println("Conexión exitosa a la base de datos");
            
            // Cerrar la conexión
            conexion.close();
        } catch (SQLException e) {
            System.out.println("Error al establecer la conexión");
            e.printStackTrace();
        }
    }
}

				
			

En este ejemplo:

  • url: Es la URL de conexión a la base de datos. Debes reemplazar "mi_base_de_datos" por el nombre de tu base de datos.
  • usuario y contraseña: Son las credenciales de acceso a la base de datos.
  • Se utiliza DriverManager para obtener una conexión a la base de datos.
  • Se captura cualquier excepción que pueda ocurrir durante la conexión.

Recuerda reemplazar "localhost", "3306", "mi_base_de_datos", "usuario" y "contraseña" con los valores correspondientes a tu configuración.

Consultas y actualizaciones

Una vez establecida la conexión a la base de datos en Java, puedes ejecutar consultas y actualizaciones utilizando Statement o PreparedStatement. Aquí tienes un ejemplo básico:

Consultas

				
					import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class ConsultasBD {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/mi_base_de_datos";
        String usuario = "usuario";
        String contraseña = "contraseña";

        try (Connection conexion = DriverManager.getConnection(url, usuario, contraseña);
             Statement statement = conexion.createStatement()) {

            String sql = "SELECT * FROM tabla";
            ResultSet resultado = statement.executeQuery(sql);

            // Procesar resultados
            while (resultado.next()) {
                int id = resultado.getInt("id");
                String nombre = resultado.getString("nombre");
                System.out.println("ID: " + id + ", Nombre: " + nombre);
            }

        } catch (SQLException e) {
            System.out.println("Error al ejecutar la consulta");
            e.printStackTrace();
        }
    }
}

				
			

Actualizaciones

				
					import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class ActualizacionesBD {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/mi_base_de_datos";
        String usuario = "usuario";
        String contraseña = "contraseña";

        try (Connection conexion = DriverManager.getConnection(url, usuario, contraseña);
             Statement statement = conexion.createStatement()) {

            String sql = "INSERT INTO tabla (nombre, edad) VALUES ('Ejemplo', 30)";
            int filasAfectadas = statement.executeUpdate(sql);
            System.out.println("Filas afectadas: " + filasAfectadas);

        } catch (SQLException e) {
            System.out.println("Error al ejecutar la actualización");
            e.printStackTrace();
        }
    }
}

				
			

En estos ejemplos:

  • Se establece la conexión a la base de datos.
  • Se crea un objeto Statement.
  • Se ejecutan consultas con executeQuery() y actualizaciones con executeUpdate().
  • Se procesan los resultados en el caso de las consultas.

Recuerda reemplazar "mi_base_de_datos", "usuario" y "contraseña" con tus propios valores.

Uso de PreparedStatement y ResultSet

El uso de PreparedStatement y ResultSet en JDBC te permite ejecutar consultas parametrizadas de manera segura y procesar los resultados de manera eficiente. Aquí tienes un ejemplo de cómo usarlos:

Uso de PreparedStatement

				
					import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class PreparedStatementEjemplo {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/mi_base_de_datos";
        String usuario = "usuario";
        String contraseña = "contraseña";

        try (Connection conexion = DriverManager.getConnection(url, usuario, contraseña)) {
            // Consulta parametrizada
            String sql = "SELECT * FROM tabla WHERE edad > ?";
            
            // Crear PreparedStatement
            PreparedStatement statement = conexion.prepareStatement(sql);
            statement.setInt(1, 18); // Asignar valor al parámetro
            
            // Ejecutar consulta
            ResultSet resultado = statement.executeQuery();

            // Procesar resultados
            while (resultado.next()) {
                int id = resultado.getInt("id");
                String nombre = resultado.getString("nombre");
                System.out.println("ID: " + id + ", Nombre: " + nombre);
            }

        } catch (SQLException e) {
            System.out.println("Error al ejecutar la consulta");
            e.printStackTrace();
        }
    }
}

				
			

Uso de ResultSet

				
					import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class ResultSetEjemplo {
    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/mi_base_de_datos";
        String usuario = "usuario";
        String contraseña = "contraseña";

        try (Connection conexion = DriverManager.getConnection(url, usuario, contraseña);
             Statement statement = conexion.createStatement()) {

            String sql = "SELECT * FROM tabla";
            ResultSet resultado = statement.executeQuery(sql);

            // Procesar resultados
            while (resultado.next()) {
                int id = resultado.getInt("id");
                String nombre = resultado.getString("nombre");
                System.out.println("ID: " + id + ", Nombre: " + nombre);
            }

        } catch (SQLException e) {
            System.out.println("Error al ejecutar la consulta");
            e.printStackTrace();
        }
    }
}

				
			

En estos ejemplos:

  • Se utiliza PreparedStatement para consultas parametrizadas.
  • Se asignan valores a los parámetros utilizando métodos como setInt(), setString(), etc.
  • Se utiliza ResultSet para procesar los resultados de la consulta.