No es un bug, es una característica no documentada

sábado, 24 de octubre de 2015

Acceso a datos. JDBC (V). Uso del ResultSet

20:03 Posted by Inazio , , No comments
El ResultSet es el objeto que representa el resultado de una consulta.
No carga toda la información en memoria, y se pueden usar para actualizar, borrar e insertar nuevas filas.

Características

Al crear un Statement, un PreparedStatement o un CallableStatement, se pueden configurar aspectos del ResultSet que devolverá al ejecutar la consulta.

createStatement(int resultSetType, int resultSetConcurrency);

prepareStatement(String SQL, int resultSetType, int resultSetConcurrency);

prepareCall(String sql, int resultSetType, int resultSetConcurrency);

resultSetType
  • ResultSet.TYPE_FORWARD_ONLY. Sólo movimiento hacia delante (por defecto).
  • ResultSet.TYPE_SCROLL_INSENSITIVE. Puede hacer cualquier movimiento pero no refleja los cambios en la base de datos.
  • ResultSet.TYPE_SCROLL_SENSITIVE. Puede hacer cualquier movimiento y además refleja los cambios en la base de datos.


resultSetConcurrency
  • ResultSet.CONCUR_READ_ONLY. Sólo lectura (por defecto).
  •  ResultSet.CONCUR_UPDATABLE. Actualizable.


Actualización de datos

rs.updateString("campo", "valor");
rs.updateInt(1, 3);
rs.updateRow();

Inserción de datos

rs.moveToInsertRow();
rs.updateString(1, "AINSWORTH");
rs.updateInt(2, 35);
rs.updateBoolean(3, true);
rs.insertRow();
rs.moveToCurrentRow();

La última línea, por cierto, mueve el cursor a la posición anterior al movimiento de inserción.

Posicionamiento del cursor

El cursor puede estar en una fila concreta, pero también puede estar en dos filas especiales.
  • Antes de la primera fila (Before the First Row, BFR)
  • Después de la última fila (After the Last Row, ALR)

Inicialmente el ResultSet está en BFR, y next() mueve el cursor hacía delante, devolviendo true si se encuentra en una fila concreta y false si alcanza el ALR.

while (rs.next()){
     String name = rs.getString("titulo");
     float price = rs.getFloat("precio");
     System.out.println(name + "\t" + price);
}



Métodos

Los métodos que permiten un movimiento por el ResultSet son:
  • next(). Siguiente fila
  •  previous(). Fila anterior
  • beforeFirst(). Antes de la primera
  • afterLast(). Después de la última.
  • first(). Primera fila
  • last(). Última fila
  • absolute(). Movimiento a una fila concreta
  • relative(). Saltar ciertas filas hacia delante

0 comentarios:

Publicar un comentario