SlideShare una empresa de Scribd logo
1 de 15
VICENTE WUALDIR ALBERA ROJAS
WILDER 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
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.
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 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");
}
}
}
}
}

Más contenido relacionado

La actualidad más candente

La actualidad más candente (19)

Sesión04 - Diccionario de datos (Oracle)
Sesión04 - Diccionario de datos (Oracle)Sesión04 - Diccionario de datos (Oracle)
Sesión04 - Diccionario de datos (Oracle)
 
Diagramacion
DiagramacionDiagramacion
Diagramacion
 
Sesión02 - Creación de objetos (Oracle)
Sesión02 - Creación de objetos (Oracle)Sesión02 - Creación de objetos (Oracle)
Sesión02 - Creación de objetos (Oracle)
 
Preparestatement
PreparestatementPreparestatement
Preparestatement
 
Ca 2013 f_01
Ca 2013 f_01Ca 2013 f_01
Ca 2013 f_01
 
Ejercicio En Weka
Ejercicio En WekaEjercicio En Weka
Ejercicio En Weka
 
Metodologia omt
Metodologia omtMetodologia omt
Metodologia omt
 
Control JTable con base de datos
Control JTable con base de datosControl JTable con base de datos
Control JTable con base de datos
 
Uml java
Uml javaUml java
Uml java
 
Clases
ClasesClases
Clases
 
Teoria del modelado de objetos otros diagramas actividad despliegue
Teoria del modelado de objetos otros diagramas actividad despliegueTeoria del modelado de objetos otros diagramas actividad despliegue
Teoria del modelado de objetos otros diagramas actividad despliegue
 
Introduccion a SQL
Introduccion a SQL Introduccion a SQL
Introduccion a SQL
 
Control jtable con base de datos
Control jtable con base de datosControl jtable con base de datos
Control jtable con base de datos
 
Diagramas de colaboracion
Diagramas de colaboracionDiagramas de colaboracion
Diagramas de colaboracion
 
Diagramas comportamiento
Diagramas comportamientoDiagramas comportamiento
Diagramas comportamiento
 
Java con base de datos
Java con base de datosJava con base de datos
Java con base de datos
 
D Iagramas U Ml
D Iagramas U MlD Iagramas U Ml
D Iagramas U Ml
 
Introducion uml
Introducion umlIntroducion uml
Introducion uml
 
Repaso 19 abril2016
Repaso 19 abril2016Repaso 19 abril2016
Repaso 19 abril2016
 

Similar a Resultset (20)

Resultset
ResultsetResultset
Resultset
 
Resulset
ResulsetResulset
Resulset
 
Resultset
ResultsetResultset
Resultset
 
Java con base de datos
Java con base de datosJava con base de datos
Java con base de datos
 
Connection
ConnectionConnection
Connection
 
Java con Base de Datos
Java con Base de DatosJava con Base de Datos
Java con Base de Datos
 
Resulset
ResulsetResulset
Resulset
 
Tema 9 aplicaciones de dos capas por gio
Tema 9   aplicaciones de dos capas por gioTema 9   aplicaciones de dos capas por gio
Tema 9 aplicaciones de dos capas por gio
 
Tema 15 aplicaciones de dos capas por gio
Tema 15   aplicaciones de dos capas por gioTema 15   aplicaciones de dos capas por gio
Tema 15 aplicaciones de dos capas por gio
 
Resultset
ResultsetResultset
Resultset
 
ResultSet
ResultSetResultSet
ResultSet
 
Control de JTable
Control de JTableControl de JTable
Control de JTable
 
ResultSet
ResultSetResultSet
ResultSet
 
RESULTSET
RESULTSETRESULTSET
RESULTSET
 
Statement
StatementStatement
Statement
 
Resultset
ResultsetResultset
Resultset
 
JAVA CON BASE DE DATOS
JAVA CON BASE DE DATOSJAVA CON BASE DE DATOS
JAVA CON BASE DE DATOS
 
Resultset
ResultsetResultset
Resultset
 
Almacenamiento en bases de datos ejercicio maestria
Almacenamiento en bases de datos ejercicio maestriaAlmacenamiento en bases de datos ejercicio maestria
Almacenamiento en bases de datos ejercicio maestria
 
Presentación result set
Presentación result setPresentación result set
Presentación result set
 

Más de Vicente Alberca (20)

Oltp exposicion grupal
Oltp exposicion grupalOltp exposicion grupal
Oltp exposicion grupal
 
Copias de seguridad
Copias de seguridadCopias de seguridad
Copias de seguridad
 
Transacciones
TransaccionesTransacciones
Transacciones
 
Administracion de seguridad
Administracion de seguridadAdministracion de seguridad
Administracion de seguridad
 
Trigger-activadores en sql server
Trigger-activadores en sql serverTrigger-activadores en sql server
Trigger-activadores en sql server
 
Cursores
CursoresCursores
Cursores
 
Procedimientos almacenados
Procedimientos almacenadosProcedimientos almacenados
Procedimientos almacenados
 
Vistas base de datos
Vistas base de datosVistas base de datos
Vistas base de datos
 
Comandos dll en sql server
Comandos dll en sql serverComandos dll en sql server
Comandos dll en sql server
 
Ejecutables
EjecutablesEjecutables
Ejecutables
 
Jasreport
JasreportJasreport
Jasreport
 
Jdbc
JdbcJdbc
Jdbc
 
Objeto sql command
Objeto sql commandObjeto sql command
Objeto sql command
 
Objeto connection
Objeto connectionObjeto connection
Objeto connection
 
Epacios nombre system.data.
Epacios nombre system.data. Epacios nombre system.data.
Epacios nombre system.data.
 
Ado.net
Ado.netAdo.net
Ado.net
 
Gestor de base de datos
Gestor de base de datosGestor de base de datos
Gestor de base de datos
 
Trabajo de Programacion Orientada a Objetos.
Trabajo de Programacion Orientada  a Objetos.Trabajo de Programacion Orientada  a Objetos.
Trabajo de Programacion Orientada a Objetos.
 
Programacion en N-capas
Programacion en N-capasProgramacion en N-capas
Programacion en N-capas
 
Diapositiva jtable
Diapositiva jtableDiapositiva jtable
Diapositiva jtable
 

Último

Electromagnetismo Fisica FisicaFisica.pdf
Electromagnetismo Fisica FisicaFisica.pdfElectromagnetismo Fisica FisicaFisica.pdf
Electromagnetismo Fisica FisicaFisica.pdfAnonymous0pBRsQXfnx
 
Flujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptxFlujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptxEduardoSnchezHernnde5
 
Historia de la Arquitectura II, 1era actividad..pdf
Historia de la Arquitectura II, 1era actividad..pdfHistoria de la Arquitectura II, 1era actividad..pdf
Historia de la Arquitectura II, 1era actividad..pdfIsbelRodrguez
 
SOUDAL: Soluciones de sellado, pegado y hermeticidad
SOUDAL: Soluciones de sellado, pegado y hermeticidadSOUDAL: Soluciones de sellado, pegado y hermeticidad
SOUDAL: Soluciones de sellado, pegado y hermeticidadANDECE
 
Fisiología del azufre en plantas S.S.pdf
Fisiología del azufre en plantas S.S.pdfFisiología del azufre en plantas S.S.pdf
Fisiología del azufre en plantas S.S.pdfJessLeonelVargasJimn
 
Presentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdfPresentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdfMirthaFernandez12
 
Fisiología del Potasio en Plantas p .pdf
Fisiología del Potasio en Plantas p .pdfFisiología del Potasio en Plantas p .pdf
Fisiología del Potasio en Plantas p .pdfJessLeonelVargasJimn
 
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)ssuser6958b11
 
Edificio residencial Tarsia de AEDAS Homes Granada
Edificio residencial Tarsia de AEDAS Homes GranadaEdificio residencial Tarsia de AEDAS Homes Granada
Edificio residencial Tarsia de AEDAS Homes GranadaANDECE
 
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdf
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdfCONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdf
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdfErikNivor
 
PRESENTACION DE CLASE. Factor de potencia
PRESENTACION DE CLASE. Factor de potenciaPRESENTACION DE CLASE. Factor de potencia
PRESENTACION DE CLASE. Factor de potenciazacariasd49
 
Sesion 02 Patentes REGISTRO EN INDECOPI PERU
Sesion 02 Patentes REGISTRO EN INDECOPI PERUSesion 02 Patentes REGISTRO EN INDECOPI PERU
Sesion 02 Patentes REGISTRO EN INDECOPI PERUMarcosAlvarezSalinas
 
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...Francisco Javier Mora Serrano
 
CAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdf
CAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdfCAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdf
CAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdfReneBellido1
 
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAIPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAJAMESDIAZ55
 
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIPSEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIPJosLuisFrancoCaldern
 
CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdf
CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdfCENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdf
CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdfpaola110264
 
PPT ASISTENCIA TECNICA PRESENTACIÓN FT- ET.pdf
PPT ASISTENCIA TECNICA PRESENTACIÓN FT- ET.pdfPPT ASISTENCIA TECNICA PRESENTACIÓN FT- ET.pdf
PPT ASISTENCIA TECNICA PRESENTACIÓN FT- ET.pdfZamiertCruzSuyo
 
estadisticasII Metodo-de-la-gran-M.pdf
estadisticasII   Metodo-de-la-gran-M.pdfestadisticasII   Metodo-de-la-gran-M.pdf
estadisticasII Metodo-de-la-gran-M.pdfFlorenciopeaortiz
 
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptxGARCIARAMIREZCESAR
 

Último (20)

Electromagnetismo Fisica FisicaFisica.pdf
Electromagnetismo Fisica FisicaFisica.pdfElectromagnetismo Fisica FisicaFisica.pdf
Electromagnetismo Fisica FisicaFisica.pdf
 
Flujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptxFlujo multifásico en tuberias de ex.pptx
Flujo multifásico en tuberias de ex.pptx
 
Historia de la Arquitectura II, 1era actividad..pdf
Historia de la Arquitectura II, 1era actividad..pdfHistoria de la Arquitectura II, 1era actividad..pdf
Historia de la Arquitectura II, 1era actividad..pdf
 
SOUDAL: Soluciones de sellado, pegado y hermeticidad
SOUDAL: Soluciones de sellado, pegado y hermeticidadSOUDAL: Soluciones de sellado, pegado y hermeticidad
SOUDAL: Soluciones de sellado, pegado y hermeticidad
 
Fisiología del azufre en plantas S.S.pdf
Fisiología del azufre en plantas S.S.pdfFisiología del azufre en plantas S.S.pdf
Fisiología del azufre en plantas S.S.pdf
 
Presentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdfPresentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdf
 
Fisiología del Potasio en Plantas p .pdf
Fisiología del Potasio en Plantas p .pdfFisiología del Potasio en Plantas p .pdf
Fisiología del Potasio en Plantas p .pdf
 
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)
VIRUS FITOPATÓGENOS (GENERALIDADES EN PLANTAS)
 
Edificio residencial Tarsia de AEDAS Homes Granada
Edificio residencial Tarsia de AEDAS Homes GranadaEdificio residencial Tarsia de AEDAS Homes Granada
Edificio residencial Tarsia de AEDAS Homes Granada
 
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdf
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdfCONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdf
CONSTRUCCIONES II - SEMANA 01 - REGLAMENTO NACIONAL DE EDIFICACIONES.pdf
 
PRESENTACION DE CLASE. Factor de potencia
PRESENTACION DE CLASE. Factor de potenciaPRESENTACION DE CLASE. Factor de potencia
PRESENTACION DE CLASE. Factor de potencia
 
Sesion 02 Patentes REGISTRO EN INDECOPI PERU
Sesion 02 Patentes REGISTRO EN INDECOPI PERUSesion 02 Patentes REGISTRO EN INDECOPI PERU
Sesion 02 Patentes REGISTRO EN INDECOPI PERU
 
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
Hanns Recabarren Diaz (2024), Implementación de una herramienta de realidad v...
 
CAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdf
CAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdfCAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdf
CAP4-TEORIA EVALUACION DE CAUDALES - HIDROGRAMAS.pdf
 
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAIPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
 
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIPSEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
SEGURIDAD EN CONSTRUCCION PPT PARA EL CIP
 
CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdf
CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdfCENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdf
CENTROIDES Y MOMENTOS DE INERCIA DE AREAS PLANAS.pdf
 
PPT ASISTENCIA TECNICA PRESENTACIÓN FT- ET.pdf
PPT ASISTENCIA TECNICA PRESENTACIÓN FT- ET.pdfPPT ASISTENCIA TECNICA PRESENTACIÓN FT- ET.pdf
PPT ASISTENCIA TECNICA PRESENTACIÓN FT- ET.pdf
 
estadisticasII Metodo-de-la-gran-M.pdf
estadisticasII   Metodo-de-la-gran-M.pdfestadisticasII   Metodo-de-la-gran-M.pdf
estadisticasII Metodo-de-la-gran-M.pdf
 
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
 

Resultset

  • 1. VICENTE WUALDIR ALBERA ROJAS WILDER FUENTES ARAUJO Desarrollo de Software I Marco Aurelio Porro Chulli RESULTSET
  • 2. 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
  • 3. 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
  • 4. 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. 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
  • 5. 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.
  • 6. 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.
  • 7. 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.
  • 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() 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.
  • 11. Índices de las columnas: 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 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"); } } } } }