Aplicaciones Java Conectadas a Base de Datos

¿Que es JDBC?
Es un conjunto de clases e interfaces Java que permite la manipulación de sentencias SQL de una fuente de datos (Base de datos).

Le proporciona a nuestras aplicaciones un mecanismo estandar e independiente de la plataforma para el acceso a la mayoria de las base de datos existentes.

Las clase e interfaces principales de JDBC se encuentran dentro del paquete java.sql:

Conexión
  • DriverManager: Proporciona métodos para cargar drivers.
  • Connection: Representa una conexión a la base de datos.
  • DatabaseMetaData: Información sobre la base de datos en general.
Comandos
  • Statement: Permite enviar sentencia SQL a la base de dato.
  • CallableStatement: Para llamadas a procedimientos almacenados.
  • PreparedStatement: Sentencias precompiladas.
Resultados
  • ResultSet: Renglones de una sentencia ejecutada.
  • ResultSetMetaData: Información propiedades de un ResultSet.
Pasos para utilizar JDBC en aplicaciones Java
  1. Cargar o registrar el Driver JDBC.
  2. Obtener la conexión.
  3. Crear el comando SQL.
  4. Ejecutar el comando SQL.
  5. Procesar los resultados.
  6. Liberar recursos.
Cargar  o registar el driver:
Para conectarnos a una base de datos a través de JDBC desde una aplicación Java, lo primero que necesitamos es cargar el Driver facilitador por el fabricante de la base de datos. La sintaxis para cargar el driver es:

Class.forName("NombreDelDriver");

Por ejemplo si vamos a utilizar la base de datos MySQL, tendriamos que descargar de la pagina el driver que ellos nos facilitan y la sintaxis seria de esta manera:

Class.forName("com.mysql.jdbc.Driver");


Obtener la conexión:
Una vez cargado el driver entonces ya podemos conectarnos con la base de datos invocando el método DriverManager.getConnection, el cual nos pedie la ubicación de la base de datos, el usuario y la contraseña de acceso a la misma. Su sintaxis es la siguiente:

Connectio conn = DriverManager.getConnection(url,usr, pwd);

Por ejemplo para obtener una conexión con la base de datos MySQL. La sintaxis seria la siguiente:

Connection conn;
String url = "jdbc:mysql://localhost/NombreBaseDatos";
conn = DriverManager.getConnection(url,"","",);


Ejemplo 1:
package JavaDevelopersRD;
import java.sql.*;

public class Conexion {
  static String db = "Empresa"; //nombre de la base de datos
  static String user = "root";    //nombre el usuario de la base de datos
  static String pass = "";          //Contraseña del usuario en este caso no tiene
  static String  url= "jdbc:mysql://localhost/"+db; //Ubicación de la base de datos

  public static void main(String[]args) {
      try {
               Class.forName("com.mysql.jdbc.Driver");  //Cargamos el Driver
              Connection conn = DriverManager.getConnection(url,user,pass); //Realizamos la conexión
              if(conn != null) { 
                  System.out.println("Conexión a la BD "+url+"...ya!!")  //Si la conexión tiene exito mostrará este mensaje
              }
      }catch(SQLException ex){
           System.out.println("Error: "+ex); //Error mostrado si la conexión falla
      }
  }
}

Crear el comando SQL:
Ya establecida la conexión con la base de datos, podemos crear sentencias SQL utilizando Statement el cual provee métodos para realizar estas tareas. La sintaxis es la siguientes:

Statement stmt = conn.createStatement();

Ahora para realizar sentencia SQL como UPDATE, INSERT, DELETE y SELECT tenemos que utilizar los siguientes metodos:
  • executeUpdate: Retorna un número entero indicando la cantidad de registros afectados (UPDATE, INSERT, DELETE).
  • executeQuery: Regresa un conjunto de resultados que se almacenan en un objeto ResultSet.
Utilizando el método executeUpdate
utilizamos este método para realizar sentencia de tipo DML que crean, modifican o eliminan datos de una tabla, tambien para sentencia de tipo DDL tales como crear, modificar y borrar tabla. Su sintaxis es la siguiente:

//Creamos la sentencia SQL
String sSQL = "INSERT INTO seguidores (id, nombre) "+
                        " VALUES (1,'Victor Manuel Santos Tejada')";

Statement stmt = conn.createStatement();
int n = stmt.executeUpdate(sSQL); //El valor de retorno se guarda en una variable entera

Utilizando el método executeUpdate
Cuando se ejecutan sentencias SELECT usando el método executeQuery, se obtiene como repuesta un conjunto de resultados, que en Java es representado por un objeto ResultSet. Su sintaxis es la siguiente:

ResultSet rs = stmt.executeQuery("SELECT * FROM seguidores"); //Se capturan los resultados en el objeto rs

El objeto ResultSet controla la recuperación de los registros. Representa un curso sobre los resultados métodos para movernos por los regitros y métodos para acceder a las columna del resultado. Sintaxis para acceder a las columna del resultado:

rs.getString("nombre"); //Nombre de la columna
rs.getString(1); //Posición de la columna

Java posee un método para cada tipo de datos que indequemos en la base de datos. Ejemplo:
si creamos un campo sueldo de tipo Float el metodo seria getFloat, si fuera tipo Int entonces seria getInt y asi sucesivamente