1. “AÑO DEL BUEN SERVICIO AL CUIDADANO”
TEMA: RESULTSET
CURSO: LABORATORIO DE PROGRAMACIÓN II.
ESPECIALIDAD: INGENIERIA DE SISTEMAS Y TELEMATICA.
NOMBRE Y APELLIDO : MIRIAN GUISELA TARRILLO CHAVEZ
JORGE LUIS ARISTA CORONEL.
DOCENTE: MARCO AURELIO PORRO CHULL
CILCO: V – A AULA: 101
BAGUA GRANDE– PERÚ
2017
3. DEFINICION
• La interfaz ResultSet proporciona acceso a los resultados
generados al ejecutar consultas. Conceptualmente, los datos de
un ResultSet pueden considerarse como una tabla con un
número específico de columnas y un número específico de filas.
Por omisión, las filas de la tabla se recuperan por orden. Dentro
de una fila, se puede acceder a los valores de columna en
cualquier orden.
4. Crear un
ResultSet
Para crear un objeto ResultSet, puede utilizar los métodos executeQuery u otros
métodos. Este artículo describe las opciones para crear ResultSet.
Estos métodos provienen de las interfaces Statement, Prepared_ Statement,
o CallableStatement. Sin embargo, existen otros métodos disponibles. Por
ejemplo, los métodos DatabaseMetaData, como por ejemplo getColumns,
getTables, getUDTs, getPrimaryKeys, etc., devuelven ResultSets.
También es posible que una sola sentencia SQL devuelva varios ResultSets para el
proceso. También puede utilizar el método getResultSet para recuperar un objeto
ResultSet después de llamar al método execute suministrado por las interfaces
Statement, PreparedStatement o CallableStatement.
5. Los objetos Statement se cerrarán
automáticamente por el colector de
basura de Java (garbage collector). No
obstante se recomienda como una buena
práctica de programación que se cierren
explicitamente cuando no sean ya
necesarios. Esto libera recursos DBMS
inmediatamente y ayuda a evitar
potenciales problemas de memoria.
Cerrar un
ResultSet
6. Recuperar datos
ResultSet
Las columnas de ResultSet están numeradas,
empezando por el 1. Si se emplea el nombre
de la columna y hay más de una columna
que tenga ese mismo nombre en el
ResultSet, se devuelve la primera, En los
métodos get que devuelven objetos, el valor
de retorno es null cuando la columna del
ResultSet es nula.
8. CARACTERÍSTICAS
DEL RESULTSET
Este tema trata las características de ResultSet así como tipos de
ResultSet, concurrencia, habilidad de cerrar el ResultSet
comprometiendo el objeto de conexión, y la especificación de las
características de ResultSet.
Por omisión, el tipo de todos los ResultSets creados es sólo hacia
adelante, la concurrencia de sólo lectura y los cursores se retienen en
los límites del compromiso. Una excepción a esta última norma la
presenta WebSphere, que actualmente cambia el valor por omisión de
la capacidad de retención de cursores de forma que los cursores se
cierren implícitamente durante la operación de compromiso.
10. Propiedades del ResultSet:
getMetaData()
public abstract
ResultSetMetaData
getMetaData() throws
SQLException
Obtiene en un objeto
ResultSetMetaData
información sobre el
número de columnas y
su estructura.
PROPIEDADES
11. import java.sql.*;
import java.util.Properties;
public class CallableStatementExample1 {
public static void main(java.lang.String[] args) {
// Registrar el controlador JDBC nativo. Si no puede
// registrarse el controlador, la prueba no puede continuar.
try {
Class.forName("com.ibm.db2.jdbc.app.DB2Driver");
// Se crean las propiedades de la conexión
Properties properties = new Properties ();
properties.put ("user", "userid");
properties.put ("password", "password");
Ejemplo 01
12. // Conectarse con la base de datos de iSeries local
Connection c =
DriverManager.getConnection("jdbc:db2://*local", properties);
Statement s = c.createStatement();
// Se crea un procedimiento con múltiples ResultSets.
String sql = "CREATE PROCEDURE MYLIBRARY.SQLSPEX1 "
+
"RESULT SET 2 LANGUAGE SQL READS SQL DATA
SPECIFIC MYLIBRARY.SQLSPEX1 " +
"EX1: BEGIN " +
" DECLARE C1 CURSOR FOR SELECT * FROM
QSYS2.SYSPROCS " +
" WHERE SPECIFIC_SCHEMA = 'MYLIBRARY'; " +
" DECLARE C2 CURSOR FOR SELECT * FROM
QSYS2.SYSPARMS " +
" WHERE SPECIFIC_SCHEMA = 'MYLIBRARY'; " +
" OPEN C1; " +
" OPEN C2; " +
" SET RESULT SETS CURSOR C1, CURSOR C2; " +
"END EX1 ";
as propitry {
s.executeUpdate(sql);
} catch (SQLException e) {
// NOTA: Aquí pasamos por alto los errores. }
s.close();
// Ahora, utilizar JDBC para ejecutar el procedimiento y obtener los
resultados.
// En este caso, vamos a obtener información sobre los procedimientos
almacenados
// de 'MYLIBRARY' (que es también donde creamos este procedimiento,
para así
// estar seguros de que haya algo que obtener.
CallableStatement cs = c.prepareCall("CALL
MYLIBRARY.SQLSPEX1");
ResultSet rs = cs.executeQuery();
// Ahora tenemos el primer objeto ResultSet que el procedimiento
almacenado
// dejó abierto. Hay que utilizarlo.
int i = 1;
while (rs.next()) {
13. System.out.println("Procedimiento almacenado de MYLIBRARY
" + i + " es " + rs.getString(1) + "." +
rs.getString(2));
i++;
}
System.out.println("");
if (!cs.getMoreResults()) {
System.out.println("Algo ha salido mal. Debía haber
otro ResultSet; se va a salir.");
System.exit(0);
}
rs = cs.getResultSet();
i = 1;
while (rs.next()) {
System.out.println("Procedimiento de MYLIBRARY " +
rs.getString(1)
+ "." + rs.getString(2) +
" parámetro: " + rs.getInt(3) + " dirección:
" + rs.getString(4) +
" tipo de datos: " + rs.getString(5));
i++;
}
if (i == 1) {
System.out.println("Ninguno de los procedimientos
almacenados tiene parámetros.");}
if (cs.getMoreResults()) {
System.out.println("Algo ha salido mal, no debía haber
otro ResultSet.");
System.exit(0);
}
cs.close(); // se cierra el objeto CallableStatement.
c.close(); // se cierra el objeto Connection.
} catch (Exception e) {
System.out.println("Algo ha fallado...");
System.out.println("Razón: " + e.getMessage());
e.printStackTrace();
}
}