Establecimiento de una conexión JDBC en Java

Antes de establecer una conexión entre el front-end, es decir, su programa Java, y el back-end, es decir, la base de datos, debemos aprender qué es exactamente un JDBC y por qué surgió. Ahora analicemos qué significa exactamente JDBC y lo facilitaremos con la ayuda de una ilustración de la vida real para que funcione.  

¿Qué es JDBC? 

JDBC es un acrónimo de Java Database Connectivity. Es un avance para ODBC (Open Database Connectivity). JDBC es una especificación de API estándar desarrollada para mover datos del frontend al backend. Esta API consta de clases e interfaces escritas en Java. Básicamente actúa como una interfaz (no la que usamos en Java) o un canal entre su programa Java y las bases de datos, es decir, establece un enlace entre los dos para que un programador pueda enviar datos del código Java y almacenarlos en la base de datos para uso futuro. .

Ilustración: funcionamiento de JDBC correlacionado con tiempo real

¿Por qué JDBC entró en existencia? 

Como se dijo anteriormente, JDBC es un avance para ODBC, ya que ODBC depende de la plataforma y tenía muchos inconvenientes. La API de ODBC se escribió en C, C++, Python y Core Java y, como sabemos, los lenguajes anteriores (excepto Java y algunas partes de Python) dependen de la plataforma. Por lo tanto, para eliminar la dependencia, JDBC fue desarrollado por un proveedor de bases de datos que constaba de clases e interfaces escritas en Java. 

Pasos para la conectividad entre el programa Java y la base de datos

  1. Importar los paquetes
  2. Cargue los controladores usando el método forName() 
  3. Registre los controladores usando DriverManager 
  4. Establecer una conexión usando el objeto de clase Connection
  5. Crear una declaración
  6. Ejecutar la consulta
  7. Cierra las conexiones

Analicemos estos pasos brevemente antes de implementarlos escribiendo un código adecuado para ilustrar los pasos de conectividad para JDBC/

Paso 1: Importar los paquetes

Paso 2: Cargar los controladores 

Para empezar, primero debe cargar el controlador o registrarlo antes de usarlo en el programa. El registro se debe hacer una vez en su programa. Puede registrar un conductor de una de las dos maneras mencionadas a continuación:

2-A Class.forName()

Aquí cargamos el archivo de clase del controlador en la memoria en tiempo de ejecución. No es necesario utilizar objetos nuevos o crear. El siguiente ejemplo usa Class.forName() para cargar el controlador de Oracle como se muestra a continuación:

Class.forName(“oracle.jdbc.driver.OracleDriver”);

2-B DriverManager.registerDriver()

DriverManager es una clase incorporada de Java con un registro de miembro estático. Aquí llamamos al constructor de la clase de controlador en tiempo de compilación. El siguiente ejemplo utiliza DriverManager.registerDriver() para registrar el controlador de Oracle como se muestra a continuación: 

 DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver())

 Paso 3: Establecer una conexión usando el objeto de clase Conexión

Después de cargar el controlador, establezca las conexiones como se muestra a continuación: 

Connection con = DriverManager.getConnection(url,user,password)
  • usuario: nombre de usuario desde el que se puede acceder a su símbolo del sistema SQL.
  • contraseña: contraseña desde la que se puede acceder al símbolo del sistema SQL.
  • con: Es una referencia a la interfaz de conexión.
  • URL : Localizador uniforme de recursos que se crea como se muestra a continuación:
String url = “ jdbc:oracle:thin:@localhost:1521:xe”

Donde Oracle es la base de datos utilizada, thin es el controlador utilizado, @localhost es la dirección IP donde se almacena una base de datos, 1521 es el número de puerto y xe es el proveedor de servicios. Los 3 parámetros anteriores son de tipo String y el programador debe declararlos antes de llamar a la función. Se puede hacer referencia al uso de esto desde el código final.

Paso 4: Crear una declaración 

Una vez que se establece una conexión, puede interactuar con la base de datos. Las interfaces JDBCStatement, CallableStatement y PreparedStatement definen los métodos que le permiten enviar comandos SQL y recibir datos de su base de datos. 
El uso de la declaración JDBC es el siguiente: 

Statement st = con.createStatement();

Nota: aquí, con es una referencia a la interfaz de conexión utilizada en el paso anterior.

Paso 5: Ejecutar la consulta 

Ahora viene la parte más importante, es decir, ejecutar la consulta. La consulta aquí es una consulta SQL. Ahora sabemos que podemos tener múltiples tipos de consultas. Algunos de ellos son los siguientes: 

  • La consulta para actualizar/insertar una tabla en una base de datos.
  • La consulta para recuperar datos.

El método executeQuery() de la interfaz Statement se utiliza para ejecutar consultas de recuperación de valores de la base de datos. Este método devuelve el objeto de ResultSet que se puede usar para obtener todos los registros de una tabla. 
El método executeUpdate(sql query) de la interfaz Statement se utiliza para ejecutar consultas de actualización/inserción.

Pseudocódigo:

int m = st.executeUpdate(sql);
if (m==1)
    System.out.println("inserted successfully : "+sql);
else
    System.out.println("insertion failed");

Aquí sql es una consulta SQL del tipo String

Java

// This code is for establishing connection with MySQL
// database and retrieving data
// from db Java Database connectivity
 
/*
 *1. import --->java.sql
 *2. load and register the driver ---> com.jdbc.
 *3. create connection
 *4. create a statement
 *5. execute the query
 *6. process the results
 *7. close
 */
 
import java.io.*;
import java.sql.*;
 
class GFG {
    public static void main(String[] args) throws Exception
    {
        String url
            = "jdbc:mysql://localhost:3306/table_name"; // table details
        String username = "rootgfg"; // MySQL credentials
        String password = "gfg123";
        String query
            = "select *from students"; // query to be run
        Class.forName(
            "com.mysql.cj.jdbc.Driver"); // Driver name
        Connection con = DriverManager.getConnection(
            url, username, password);
        System.out.println(
            "Connection Established successfully");
        Statement st = con.createStatement();
        ResultSet rs
            = st.executeQuery(query); // Execute query
        rs.next();
        String name
            = rs.getString("name"); // Retrieve name from db
 
        System.out.println(name); // Print result on console
        st.close(); // close statement
        con.close(); // close connection
        System.out.println("Connection Closed....");
    }
}

Producción:

el nombre del estudiante se recupera de la base de datos

Paso 6: Cerrar las conexiones 

Finalmente, hemos enviado los datos a la ubicación especificada y ahora estamos a punto de completar nuestra tarea. Al cerrar la conexión, los objetos de Statement y ResultSet se cerrarán automáticamente. El método close() de la interfaz Connection se utiliza para cerrar la conexión. Se muestra a continuación de la siguiente manera:

 con.close();

Ejemplo:

Java

// Java Program to Establish Connection in JDBC
 
// Importing database
import java.sql.*;
// Importing required classes
import java.util.*;
 
// Main class
class Main {
 
    // Main driver method
    public static void main(String a[])
    {
 
        // Creating the connection using Oracle DB
        // Note: url syntax is standard, so do grasp
        String url = "jdbc:oracle:thin:@localhost:1521:xe";
 
        // Username and password to access DB
        // Custom initialization
        String user = "system";
        String pass = "12345";
 
        // Entering the data
        Scanner k = new Scanner(System.in);
 
        System.out.println("enter name");
        String name = k.next();
 
        System.out.println("enter roll no");
        int roll = k.nextInt();
 
        System.out.println("enter class");
        String cls = k.next();
 
        // Inserting data using SQL query
        String sql = "insert into student1 values('" + name
                     + "'," + roll + ",'" + cls + "')";
 
        // Connection class object
        Connection con = null;
 
        // Try block to check for exceptions
        try {
 
            // Registering drivers
            DriverManager.registerDriver(
                new oracle.jdbc.OracleDriver());
 
            // Reference to connection interface
            con = DriverManager.getConnection(url, user,
                                              pass);
 
            // Creating a statement
            Statement st = con.createStatement();
 
            // Executing query
            int m = st.executeUpdate(sql);
            if (m == 1)
                System.out.println(
                    "inserted successfully : " + sql);
            else
                System.out.println("insertion failed");
 
            // Closing the connections
            con.close();
        }
 
        // Catch block to handle exceptions
        catch (Exception ex) {
            // Display message when exceptions occurs
            System.err.println(ex);
        }
    }
}

Producción:

Este artículo es una contribución de Shreya Gupta . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *