Ejemplo: utilizar PreparedStatement para obtener un ResultSet

Este es un ejemplo de utilización del método executeQuery de un objeto PreparedStatement para obtener un ResultSet.

Nota: Al utilizar los ejemplos de código, acepta los términos de: Información sobre licencia de código y exención de responsabilidad.
import java.sql.*;
import java.util.Properties;

public class PreparedStatementExample {

    public static void main(java.lang.String[] args) 
    {
        String URL    = "jdbc:db2://*local";
        Connection c = null;
        Statement s = null;

        //    Este programa crea una tabla que 
        //    las sentencias preparadas utilizan más tarde.
        try {
            // Crear las propiedades de conexión.
            Properties properties = new Properties ();
            properties.put ("user", "userid");
            properties.put ("password", "password");

            // Conectar con la base de datos local.
            c = DriverManager.getConnection(URL, properties);

            // Crear un objeto Statement.
            s = c.createStatement();
            // Suprimir la tabla de prueba, si existe.  Observar que 
            // en todo este ejemplo se presupone que la colección
            // MYLIBRARY existe en el sistema.
            try {
                s.executeUpdate("DROP TABLE MYLIBRARY.MYTABLE");
            } catch (SQLException e) {
                // Continuar simplemente... es probable que la tabla no exista.  
            }

            // Ejecutar una sentencia SQL que cree una tabla en la base de datos.
            s.executeUpdate("CREATE TABLE MYLIBRARY.MYTABLE (NAME VARCHAR(20), ID INTEGER)");

        } catch (SQLException sqle) {
            System.out.println("El proceso de base de datos ha fallado.");
            System.out.println("Razón: " + sqle.getMessage());
        } finally {
            // Cerrar los recursos de base de datos.
            try {
                if (s != null) {
                    s.close();
                }
            } catch (SQLException e) {
                System.out.println("El borrado no ha podido cerrar Statement.");
            }
        }


        // Luego, este programa usa una sentencia preparada para insertar muchas 
        // filas en la base de datos.
        PreparedStatement ps = null;
        String[] nameArray = {"Rich", "Fred", "Mark", "Scott", "Jason", 
            "John", "Jessica", "Blair", "Erica", "Barb"};
        try {
            // Crear un objeto PreparedStatement utilizado para insertar datos en la 
            // tabla.
            ps = c.prepareStatement("INSERT INTO MYLIBRARY.MYTABLE (NAME, ID) VALUES (?, ?)");

            for (int i = 0; i < nameArray.length; i++) {
                ps.setString(1, nameArray[i]);  // Establecer el nombre a partir de nuestra matriz.
                ps.setInt(2, i+1);              // Establecer el ID.
                ps.executeUpdate();
            }

        } catch (SQLException sqle) {
            System.out.println("El proceso de base de datos ha fallado.");
            System.out.println("Razón: " + sqle.getMessage());
        } finally {
            // Cerrar los recursos de base de datos.
            try {
                if (ps != null) {
                    ps.close();
                }
            } catch (SQLException e) {
                System.out.println("El borrado no ha podido cerrar Statement.");
            }
        }


        //    Utilizar una sentencia preparada para consultar la tabla de 
        //    base de datos creada y devolver datos desde ella. En
        //    este ejemplo, el parámetro usado se ha establecido arbitrariamente 
        //    en 5, es decir, devolver todas las filas en que el campo ID sea menor
        //    o igual a 5.
        try {
            ps = c.prepareStatement("SELECT * FROM MYLIBRARY.MYTABLE " + 
                                    "WHERE ID <= ?");

            ps.setInt(1, 5);

            // Ejecutar una consulta SQL en la tabla.
            ResultSet rs = ps.executeQuery();
            // Visualizar todos los datos de la tabla.
            while (rs.next()) {
                System.out.println("El empleado " + rs.getString(1) + " tiene el ID " + rs.getInt(2));
            }

        } catch (SQLException sqle) {
            System.out.println("El proceso de base de datos ha fallado.");
            System.out.println("Razón: " + sqle.getMessage());
        } finally {
            // Cerrar los recursos de base de datos.
            try {
                if (ps != null) {
                    ps.close();
                }
            } catch (SQLException e) {
                System.out.println("El borrado no ha podido cerrar Statement.");
            }

            try {
                if (c != null) {
                    c.close();
                }
            } catch (SQLException e) {
                System.out.println("El borrado no ha podido cerrar Connection.");;
            }

        }
    }
}