Hola a todos he utilizado el siguiente codigo para paginar una tabla y mostrar los resultados.
Código:
public ArrayList ejecutaQueryPaginada(String query, int numPagina,
int numRegPagina) {
ArrayList alResultado = new ArrayList();
Connection conBBDD = null;
Statement st = null;
ResultSet rs = null;
try {
conBBDD=getConnection();
st = conBBDD.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
st.setFetchSize(numRegPagina);
rs = st.executeQuery(query);
int fila = numRegPagina * (numPagina - 1) + 1;
int cont = 1;
ResultSetMetaData md = rs.getMetaData();
int numeroColumnas = md.getColumnCount();
ArrayList alRegistro = new ArrayList(numeroColumnas);
for (int i = 1; i <= numeroColumnas; i++) {
String nomCol = md.getColumnName(i);
alRegistro.add(nomCol);
}
alResultado.add(alRegistro);
if (rs.absolute(fila) && numRegPagina > 0) {
do {
alRegistro = new ArrayList();
for (int i = 1; i <= numeroColumnas; i++) {
alRegistro.add(rs.getString(i));
}
alResultado.add(alRegistro);
cont++;
}
while (rs.next() && (cont <= numRegPagina));
}
Integer numTuplasTotal = new Integer(0);
if (rs.last()) {
numTuplasTotal = new Integer(rs.getRow());
}
alResultado.add(0, numTuplasTotal);
} catch (Exception e) {
e.printStackTrace();
} finally {
if(st!=null) {
try {
st.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(rs!=null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conBBDD!=null) {
try {
conBBDD.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
return (alResultado);
}
Mi pregunta es si es mas optimo que realizar la paginacion por medio de un query de la siguiente manera cuando son miles de registros:
Código:
select * from (
select rownum,nombre,apellido,edad
from clientes
where fecha between '01/01/2008' and '01/01/2009') a
where between a.rownum = 40 and a.rownum=60
Actualmente estoy utilizando cuando pagino el resultset por que fue la unica forma que pude realizar para ordenar los datos por las columnas.
Les agradecere sus comentarios, de antemano Gracias..