YANINA BUSTAMANTE JIBAJA
YENNY ISABEL CUELLO MORON
Desarrollo de Software I Marco Aurelio Porro Chulli
RESULTSET
RESULTSET
Un ResultSet contiene todas las
filas que satisfacen las
condiciones de una sentencia
SQL y proporciona el acceso a
los datos de estas filas mediante
un conjunto de métodos
Mediante esta interfaz, se
organizan en tablas los
resultados de las órdenes
SQL
El formato general de un result set es una tabla con cabeceras de columna y los valores
correspondientes devueltos por la ‘query’. Por ejemplo, si la ‘query’ es SELECT a, b, c FROM
Table1, el resultado tendrá una forma semejante a:
a b c
-------- --------- --------
12345 Cupertino CA
83472 Redmond WA
83492 Boston MA
El cursor se mueve una
fila hacia abajo cada vez
que se llama al método
next.
Filas y Cursores
Un cursor se mantiene válido hasta
que el objeto Resultset o su objeto
padre Statement se cierra.
Las filas de ResultSet se
recuperan en secuencia desde
la fila más alta a la más baja.
DatabaseMetaData.supportsPositionedDelete
DatabaseMetaData.supportsPositionedUpdate
 Permiten descubrir si estas operaciones
están soportadas en una conexión dada
 Cuando lo están, el driver o la DBMS
deben asegurarse que las filas
seleccionadas están apropiadamente
bloqueadas.
 por tanto que estas operaciones no
provoquen actualizaciones anómalas ni
otros problemas de concurrencia.
Los métodos getXXX suministran los medios para
recuperar los valores de las columnas de la fila
actual
Dentro de cada fila, los valores de las
columnas pueden recuperarse en
cualquier orden
La opción de usar el nombre de columna fue
provista para que el usuario que especifica
nombres de columnas en una ‘query’ pueda usar
esos nombres como argumentos de los métodos
getXXX.
MÉTODOS
Siguiente fila: next()
public abstract boolean next() throws SQLException
Pasa a la siguiente fila, o a la primera cuando se ejecuta por primera vez. Devuelve true si se consigue y false
si no quedan filas.
Cierre del ResultSet: close()
public abstract void close() throws SQLException
Cierra inmediatamente el ResultSet, liberando los recursos utilizados.
Resultados nulos: wasNull()
public abstract boolean wasNull() throws SQLException
Se usa después de obtener un null con un método getXXX() para comprobar que corresponde a un valor NULL
SQL.
Obtención de valores: getXXX()
public abstract tipoJava getXXX(int indiceColumna) throws SQLException
public abstract tipoJava getXXX(String nombreColumna) throws SQLException
Obtienen el valor contenido en la columna como un tipoJava, o un null si se trataba de un valor NULL de
SQL.
Método getXXX() tipo Java
getString String
getBoolean boolean
getByte byte
getShort short
getInt int
getLong long
getFloat float
getDouble double
getBigDecimal* BigDecimal
getBytes byte[]
getDate Date
getTime Time
getTimestamp Timestamp
getAsciiStream** InputStream
getUnicodeStream** InputStream
Lectura de avisos: getWarnings()
public abstract SQLWarning getWarnings() throws SQLException
Obtiene el primer aviso de la cadena de avisos SQL producidos durante el trabajo con este ResultSet o
null si no hay ninguno. La cadena de avisos se renueva con cada fila.
Borrado de avisos: clearWarnings()
public abstract void clearWarnings() throws SQLException
Borra todos los avisos de la cadena.
Obtención del nombre del cursor: getCursorName()
public abstract String getCursorName() throws SQLException
Obtiene el nombre del cursor asignado a este ResultSet.
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.
Obtención de Objetos: getObject()
public abstract Object getObject(int indiceColumna) throws SQLException
public abstract Object getObject(int nombreColumna) throws SQLException
Obtiene el valor contenido en la columna como un objeto Java cuyo tipo sigue la traducción estándar
JDBC de tipos SQL a tipos Java. Este método es válido para tipos específicos de la base de
datos.
Índices de las columnas: findColumn()
public abstract int findColumn(String nombreColumna) throws SQLException.Obtiene el índice de una columna
conocido su nombre.
EJEMPLOS DE RESULTSET
 Este programa muestra la utilización de ResultSetMetaData y ResultSet para visualizar todos los datos de
una tabla aunque el programa que obtiene los datos no sabe cuál es el aspecto que tendrá la tabla (el usuario
pasa los valores correspondientes a la tabla y a la biblioteca).
import java.sql.*;
/**
ResultSetExample.java
public class ResultSetExample {
public static void main(java.lang.String[] args)
{
if (args.length != 2) {
System.out.println("Uso: java ResultSetExample <biblioteca> <tabla>");
System.out.println(" siendo <biblioteca> la biblioteca que contiene la <tabla>");
System.exit(0);
}
Connection con = null;
Statement s = null;
ResultSet rs = null;
ResultSetMetaData rsmd = null;
try {
// Obtener una conexión a base de datos y preparar una sentencia.
Class.forName("com.ibm.db2.jdbc.app.DB2Driver");
con = DriverManager.getConnection("jdbc:db2:*local");
s = con.createStatement();
rs = s.executeQuery("SELECT * FROM " + args[0] + "." + args[1]);
rsmd = rs.getMetaData();
int colCount = rsmd.getColumnCount();
int rowCount = 0;
while (rs.next()) {
rowCount++;
System.out.println("Datos para la fila " + rowCount);
for (int i = 1; i <= colCount; i++)
System.out.println(" Fila " + i + ": " + rs.getString(i));
}
} catch (Exception e) {
// Manejar los errores.
System.out.println("Tenemos un error... ");
e.printStackTrace();
} finally {
// Hay que asegurarse de que siempre se haga
// el borrado. Si la conexión se cierra, la
// sentencia que hay debajo de ella también se cerrará.
if (con != null) {
try {
con.close();
} catch (SQLException e) {
System.out.println("Error grave: no se puede cerrar el objeto
conexión");
}
}
}
}
}

Resultset

  • 1.
    YANINA BUSTAMANTE JIBAJA YENNYISABEL CUELLO MORON Desarrollo de Software I Marco Aurelio Porro Chulli RESULTSET
  • 2.
    RESULTSET Un ResultSet contienetodas las filas que satisfacen las condiciones de una sentencia SQL y proporciona el acceso a los datos de estas filas mediante un conjunto de métodos Mediante esta interfaz, se organizan en tablas los resultados de las órdenes SQL
  • 3.
    El formato generalde un result set es una tabla con cabeceras de columna y los valores correspondientes devueltos por la ‘query’. Por ejemplo, si la ‘query’ es SELECT a, b, c FROM Table1, el resultado tendrá una forma semejante a: a b c -------- --------- -------- 12345 Cupertino CA 83472 Redmond WA 83492 Boston MA
  • 4.
    El cursor semueve una fila hacia abajo cada vez que se llama al método next. Filas y Cursores Un cursor se mantiene válido hasta que el objeto Resultset o su objeto padre Statement se cierra. Las filas de ResultSet se recuperan en secuencia desde la fila más alta a la más baja.
  • 5.
    DatabaseMetaData.supportsPositionedDelete DatabaseMetaData.supportsPositionedUpdate  Permiten descubrirsi estas operaciones están soportadas en una conexión dada  Cuando lo están, el driver o la DBMS deben asegurarse que las filas seleccionadas están apropiadamente bloqueadas.  por tanto que estas operaciones no provoquen actualizaciones anómalas ni otros problemas de concurrencia.
  • 6.
    Los métodos getXXXsuministran los medios para recuperar los valores de las columnas de la fila actual Dentro de cada fila, los valores de las columnas pueden recuperarse en cualquier orden La opción de usar el nombre de columna fue provista para que el usuario que especifica nombres de columnas en una ‘query’ pueda usar esos nombres como argumentos de los métodos getXXX.
  • 7.
    MÉTODOS Siguiente fila: next() publicabstract boolean next() throws SQLException Pasa a la siguiente fila, o a la primera cuando se ejecuta por primera vez. Devuelve true si se consigue y false si no quedan filas. Cierre del ResultSet: close() public abstract void close() throws SQLException Cierra inmediatamente el ResultSet, liberando los recursos utilizados. Resultados nulos: wasNull() public abstract boolean wasNull() throws SQLException Se usa después de obtener un null con un método getXXX() para comprobar que corresponde a un valor NULL SQL.
  • 8.
    Obtención de valores:getXXX() public abstract tipoJava getXXX(int indiceColumna) throws SQLException public abstract tipoJava getXXX(String nombreColumna) throws SQLException Obtienen el valor contenido en la columna como un tipoJava, o un null si se trataba de un valor NULL de SQL. Método getXXX() tipo Java getString String getBoolean boolean getByte byte getShort short getInt int getLong long getFloat float getDouble double getBigDecimal* BigDecimal getBytes byte[] getDate Date getTime Time getTimestamp Timestamp getAsciiStream** InputStream getUnicodeStream** InputStream
  • 9.
    Lectura de avisos:getWarnings() public abstract SQLWarning getWarnings() throws SQLException Obtiene el primer aviso de la cadena de avisos SQL producidos durante el trabajo con este ResultSet o null si no hay ninguno. La cadena de avisos se renueva con cada fila. Borrado de avisos: clearWarnings() public abstract void clearWarnings() throws SQLException Borra todos los avisos de la cadena. Obtención del nombre del cursor: getCursorName() public abstract String getCursorName() throws SQLException Obtiene el nombre del cursor asignado a este ResultSet.
  • 10.
    Propiedades del ResultSet getMetaData() publicabstract ResultSetMetaData getMetaData() throws SQLException Obtiene en un objeto ResultSetMetaData información sobre el número de columnas y su estructura. Obtención de Objetos: getObject() public abstract Object getObject(int indiceColumna) throws SQLException public abstract Object getObject(int nombreColumna) throws SQLException Obtiene el valor contenido en la columna como un objeto Java cuyo tipo sigue la traducción estándar JDBC de tipos SQL a tipos Java. Este método es válido para tipos específicos de la base de datos.
  • 11.
    Índices de lascolumnas: findColumn() public abstract int findColumn(String nombreColumna) throws SQLException.Obtiene el índice de una columna conocido su nombre.
  • 12.
    EJEMPLOS DE RESULTSET Este programa muestra la utilización de ResultSetMetaData y ResultSet para visualizar todos los datos de una tabla aunque el programa que obtiene los datos no sabe cuál es el aspecto que tendrá la tabla (el usuario pasa los valores correspondientes a la tabla y a la biblioteca). import java.sql.*; /** ResultSetExample.java public class ResultSetExample { public static void main(java.lang.String[] args) { if (args.length != 2) { System.out.println("Uso: java ResultSetExample <biblioteca> <tabla>"); System.out.println(" siendo <biblioteca> la biblioteca que contiene la <tabla>");
  • 13.
    System.exit(0); } Connection con =null; Statement s = null; ResultSet rs = null; ResultSetMetaData rsmd = null; try { // Obtener una conexión a base de datos y preparar una sentencia. Class.forName("com.ibm.db2.jdbc.app.DB2Driver"); con = DriverManager.getConnection("jdbc:db2:*local"); s = con.createStatement(); rs = s.executeQuery("SELECT * FROM " + args[0] + "." + args[1]); rsmd = rs.getMetaData();
  • 14.
    int colCount =rsmd.getColumnCount(); int rowCount = 0; while (rs.next()) { rowCount++; System.out.println("Datos para la fila " + rowCount); for (int i = 1; i <= colCount; i++) System.out.println(" Fila " + i + ": " + rs.getString(i)); } } catch (Exception e) { // Manejar los errores. System.out.println("Tenemos un error... "); e.printStackTrace(); } finally {
  • 15.
    // Hay queasegurarse de que siempre se haga // el borrado. Si la conexión se cierra, la // sentencia que hay debajo de ella también se cerrará. if (con != null) { try { con.close(); } catch (SQLException e) { System.out.println("Error grave: no se puede cerrar el objeto conexión"); } } } } }