Conexión con JDBC#

Objetivos#

  • Identificar y diferenciar los tipos de bases de datos.

  • Conocer las características y usos de cada tipo de base de datos.

  • Aprender a conectar una aplicación Java con una base de datos utilizando JDBC.

  • Implementar una conexión básica y realizar operaciones simples sobre una base de datos relacional.

Introducción#

En el desarrollo de software, las bases de datos juegan un papel fundamental en el almacenamiento y manejo eficiente de la información. Existen varios tipos de bases de datos, cada uno diseñado para diferentes aplicaciones, y es esencial para los desarrolladores saber cómo conectarse y manipular estas bases de datos desde sus aplicaciones. En Java, la interacción con las bases de datos se realiza a través de la API JDBC (Java Database Connectivity), que proporciona un estándar para conectar aplicaciones Java con bases de datos.

En esta clase, exploraremos cómo realizar una conexión básica a una base de datos utilizando Java.

Conexión#

La conexión a una base de datos en Java se realiza a través de la API Java Database Connectivity (JDBC). JDBC proporciona una forma estandarizada de conectarse a bases de datos relacionales. El flujo básico de conexión es:

  1. Cargar el controlador JDBC.

  2. Establecer la conexión con la base de datos.

  3. Crear una declaración SQL y ejecutarla.

  4. Procesar los resultados.

  5. Cerrar la conexión.

Ejemplo de Conexión a MySQL en Java usando JDBC#

A continuación, te mostramos cómo realizar una conexión simple a una base de datos MySQL y ejecutar una consulta básica.

Configuración de la Base de Datos#

Antes de empezar, asegúrate de tener MySQL instalado y configurado. Crea una base de datos llamada universidad con una tabla estudiantes.

%maven com.mysql:mysql-connector-j:9.1.0
import java.sql.*;

public class DatabaseConnection {
    private static final String URL = "jdbc:mysql://127.0.0.1:3306/Universidad";
    private static final String USER = "dba"; // Cambia 'root' por tu usuario de MySQL
    private static final String PASSWORD = "$123456789"; // Cambia 'yourpassword' por tu contraseña de MySQL

    public static Connection getConnection() throws SQLException {
        return DriverManager.getConnection(URL, USER, PASSWORD);
    }
}
import java.sql.*;

//Creación de la tabla
public class CreateTable {
    public static void Create() {
        String query = """
            CREATE TABLE IF NOT EXISTS Estudiantes (
                `matricula` INT NOT NULL AUTO_INCREMENT,
                `nombre` VARCHAR(50) NOT NULL,
                `edad` INT NULL DEFAULT NULL,
                `fechaNacimiento` DATE NULL DEFAULT NULL,
                `direccion` VARCHAR(100) NULL DEFAULT NULL,
                `telefono` VARCHAR(15) NULL DEFAULT NULL,
                `correoElectronico` VARCHAR(100) NULL DEFAULT NULL,
                PRIMARY KEY (`matricula`)
                );
            """;;
        try (Connection connection = DatabaseConnection.getConnection();
             Statement stmt = connection.createStatement()) {
          
              // Usando el método executeUpdate
              int result = stmt.executeUpdate(query);
              System.out.println(result);

              // Usando el método execute
              boolean result1 = stmt.execute(query);
              System.out.println(result1);
            
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        Create();
    }
  }
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class InsertStudent {
    public static void insert(int matricula, String nombre, int edad, String fechaNacimiento, String direccion, String telefono, String correoElectronico) {
        String query = "INSERT INTO Estudiantes (matricula, nombre, edad, fechaNacimiento, direccion, telefono, correoElectronico) VALUES (?, ?, ?, ?, ?, ?, ?)";
        try (Connection connection = DatabaseConnection.getConnection();
             PreparedStatement preparedStatement = connection.prepareStatement(query)) {

            preparedStatement.setInt(1, matricula);
            preparedStatement.setString(2, nombre);
            preparedStatement.setInt(3, edad);
            preparedStatement.setString(4, fechaNacimiento);
            preparedStatement.setString(5, direccion);
            preparedStatement.setString(6, telefono);
            preparedStatement.setString(7, correoElectronico);

            int rowsInserted = preparedStatement.executeUpdate();
            System.out.println("Estudiante insertado correctamente: " + rowsInserted);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        insert(1, "Sebastian", 27, "2024-12-12", "calle ", "3195140529", "saguileran@itc.edu.co");
    }
}
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class SelectEstudents {
    public static void selectAll() {
        String query = "SELECT * FROM Estudiantes";
        try (Connection connection = DatabaseConnection.getConnection();
             PreparedStatement preparedStatement = connection.prepareStatement(query)) {

            ResultSet resultSet = preparedStatement.executeQuery();

            while (resultSet.next()) {
                int matricula = resultSet.getInt("matricula");
                String nombre = resultSet.getString("nombre");
                int edad = resultSet.getInt("edad");
                
                System.out.println("id: " + matricula + ", Nombre: " + nombre + ", Edad: " + edad);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        selectAll();
    }
}
new CreateTable().main(null);
//new InsertStudent().insert(1, "Sebastian", 27, "2024-12-12", "calle ", "3195140529", "saguileran@itc.edu.co");
new SelectEstudents().selectAll();
0
false