Db2 11.1

Ejemplo de una aplicación JDBC simple

Aplicación JDBC simple que muestra los elementos básicos que es necesario incluir en una aplicación JDBC.

Figura 1. Aplicación JDBC sencilla
import java.sql.*;                                                            1 

public class EzJava 
{
  public static void main(String[] args) 
  {
    String urlPrefix = "jdbc:db2:";
    String url;
    String user;
    String password;
    String empNo;                                                             2 
    Connection con;
    Statement stmt;
    ResultSet rs;
    
    System.out.println ("**** Especificar clase EzJava");
    
    // Comprobar que el primer argumento tenga el formato correcto para la parte
    // del URL jdbc: db2:,
    // tal como se describe en el tema Conexión a una fuente
    // de datos utilizando la interfaz DriverManager 
    // con IBM Data Server Driver para JDBC y SQLJ.
    // Por ejemplo, para IBM Data Server Driver para 
    // conectividad de JDBC y SQLJ de tipo 2, 
    // args[0] puede ser MVS1DB2M. Para la 
    // conectividad de tipo 4, args[0] podría ser
    // stlmvs1:10110/MVS1DB2M.

    if (args.length!=3)
    {
      System.err.println ("Valor no válido. Primer argumento añadido a "+
       "jdbc:db2: debe especificar un URL válido.");
      System.err.println ("El segundo argumento debe ser un ID de usuario válido.");
      System.err.println ("El tercer argumento debe ser la contraseña del ID de usuario.");
      System.exit(1);
    }
    url = urlPrefix + args[0];
    user = args[1];
    password = args[2];
    try 
    {                                                                        
      // Cargar el controlador
      Class.forName("com.ibm.db2.jcc.DB2Driver");                             3a 
      System.out.println("**** Controlador JDBC cargado");

      // Crear conexión utilizando IBM Data Server Driver para JDBC y SQLJ
      con = DriverManager.getConnection (url, user, password);                3b 
      // Confirmar los cambios manualmente
      con.setAutoCommit(false);
      System.out.println("**** Creada una conexión JDBC con la fuente de datos");

      // Crear el objeto Statement
      stmt = con.createStatement();                                           4a 
      System.out.println("**** Creado el objeto Statement de JDBC");

      // Ejecutar una consulta y generar instancia del conjunto de resultados
      rs = stmt.executeQuery("SELECT EMPNO FROM EMPLOYEE");                   4b 
      System.out.println("**** Creado el objeto JDBC ResultSet");

      // Imprimir todos los números de empleado en el dispositivo de salida estándar
      while (rs.next()) {
        empNo = rs.getString(1);
        System.out.println("Número de empleado = " + empNo);
      }
      System.out.println("**** Buscadas todas las filas del conjunto resultados JDBC");
      // Cerrar el conjunto de resultados
      rs.close();
      System.out.println("**** Cerrado el conjunto de resultados de JDBC");
      
      // Cerrar el objeto Statement
      stmt.close();
      System.out.println("**** Cerrado el objeto Statement de JDBC");

      // La conexión debe estar en un límite de unidad trabajo para permitir cierre
      con.commit();
      System.out.println ( "**** Transacción confirmada" );
      
      // Cierre la conexión
      con.close();                                                            6 
      System.out.println("**** Desconectado de la fuente de datos");

      System.out.println("**** Salida de JDBC de la clase EzJava - sin errores");

    }
    
    catch (ClassNotFoundException e)
    {
      System.err.println("No se pudo cargar el controlador JDBC");
      System.out.println("Exception: " + e);
      e.printStackTrace();
    }

    catch(SQLException ex)                                                    5  
    {
      System.err.println("Información sobre SQLException");
      while(ex!=null) {
        System.err.println ("Mensaje de error: " + ex.getMessage());
        System.err.println ("SQLSTATE: " + ex.getSQLState());
        System.err.println ("Código de error: " + ex.getErrorCode());
        ex.printStackTrace();
        ex = ex.getNextException(); // Para controladores que soportan
                                    // excepciones encadenadas
      }
    }
  }  // Fin main
}    // Fin EzJava

Notas para la Figura 1:

Nota Descripción
1 Esta sentencia importa el paquete java.sql, el cual contiene la API básica de JDBC. Para obtener información sobre otros paquetes Java™ que puede ser necesario acceder, consulte "Paquetes Java para soporte de JDBC".
2 La variable empNo de tipo String realiza la función de una variable del lenguaje principal. Es decir, se utiliza para contener datos obtenidos en una consulta de SQL. Consulte "Variables en aplicaciones JDBC" para obtener más información.
3a y 3b Estos dos conjuntos de sentencias muestran cómo conectar con una fuente de datos utilizando una de dos interfaces disponibles. Consulte "Cómo las aplicaciones JDBC conectan con una fuente de datos" para conocer más detalles.

El paso 3a (carga del controlador JDBC) no es necesario si se utiliza JDBC 4.0 o posterior.

4a y 4b Estos dos conjuntos de sentencias muestran cómo ejecutar una operación SELECT en JDBC. Para obtener información sobre cómo realizar otras operaciones de SQL, consulte "Interfaces de JDBC para ejecutar SQL".
5 Este bloque try/catch muestra el uso de la clase SQLException para el manejo de errores de SQL. Para obtener más información sobre el manejo de errores de SQL, consulte "Manejo de una excepción de SQL cuando se utiliza IBM® Data Server Driver para JDBC y SQLJ". Para obtener información sobre el manejo de avisos de SQL, consulte "Manejo de un aviso de SQL cuando se utiliza IBM Data Server Driver para JDBC y SQLJ".
6 Esta sentencia desconecta la aplicación respecto de la fuente de datos. Consulte "Desconexión de fuente de datos en aplicaciones JDBC".