Resultset

15
INGENIERIA DE SISTEMAS Y TELEMATICA VICENTE WUALDIR ALBERA ROJAS WILDER FUENTES ARAUJO Desarrollo de Software I Marco Aurelio Porro Chulli RESULTSET

Transcript of Resultset

INGENIERIA DE SISTEMAS Y TELEMATICA

VICENTE WUALDIR ALBERA ROJASWILDER FUENTES ARAUJO

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

Si una base de datos permite upadtes posicionados o deletes posicionados, el

nombre del cursor es necesario y debe ser

proporcionado como un parámetro del comando

update o delete

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 ordenLa 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.

LAS

COLU

MNAS

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 JavagetString 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

getBinaryStream** 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");

}

}

}

}

}