una tiene saber registros recorrer obtener numero nombre filas datos cuantos contar consulta como columna java resultset

tiene - recorrer resultset java



Obtener el nĂºmero de filas devueltas por ResultSet en Java (11)

He usado un ResultSet que devuelve cierto número de filas. Mi código es algo como esto:

ResultSet res = getData(); if(!res.next()) { System.out.println("No Data Found"); } while(res.next()) { // code to display the data in the table. }

¿Hay algún método para verificar el número de filas devueltas por el ResultSet ? ¿O tengo que escribir el mío?


Otra forma de diferenciar entre 0 filas o algunas filas de un ResultSet:

ResultSet res = getData(); if(!res.isBeforeFirst()){ //res.isBeforeFirst() is true if the cursor //is before the first row. If res contains //no rows, rs.isBeforeFirst() is false. System.out.println("0 rows"); } else{ while(res.next()){ // code to display the rows in the table. } }

Si debe conocer el número de filas que se le asignó a ResultSet, aquí tiene un método para obtenerlo:

public int getRows(ResultSet res){ int totalRows = 0; try { res.last(); totalRows = res.getRow(); res.beforeFirst(); } catch(Exception ex) { return 0; } return totalRows ; }


Podría cargar el ResultSet en un TableModel, luego crear una JTable que use ese TableModel, y luego usar el método table.getRowCount (). Si va a mostrar el resultado de la consulta, debe hacerlo de todos modos.

ResultSet resultSet; resultSet = doQuery(something, somethingelse); KiransTableModel myTableModel = new KiransTableModel(resultSet); JTable table = new JTable(KiransTableModel); int rowCount; rowCount = table.getRowCount;


Podría usar un bucle do ... while while en lugar de un bucle while, de modo que se rs.next() después de que se ejecute el bucle, así:

if (!rs.next()) { //if rs.next() returns false //then there are no rows. System.out.println("No records found"); } else { do { // Get data from the current row and use it } while (rs.next()); }

O cuenta las filas a medida que las obtienes:

int count = 0; while (rs.next()) { ++count; // Get data from the current row and use it } if (count == 0) { System.out.println("No records found"); }


Podrías contar con sql y recuperar la respuesta del conjunto de resultados así:

Statment stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); ResultSet ct = stmt.executeQuery("SELECT COUNT(*) FROM [table_name]"); if(ct.next()){ td.setTotalNumRows(ct.getInt(1)); }

Aquí estoy contando todo, pero usted puede modificar fácilmente el SQL para contar basado en un criterio.


Primero, debe crear una instrucción que pueda mover el cursor por comando:

Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);

Luego recupere el ResultSet como se muestra a continuación:

ResultSet rs = stmt.executeQuery(...);

Mueve el cursor a la última fila y obténlo:

if (rs.last()) { int rows = rs.getRow(); // Move to beginning rs.beforeFirst(); ... }

Entonces la variable de filas contendrá el número de filas devueltas por sql


Puedes usar res.previous() siguiente manera:

ResulerSet res = getDate(); if(!res.next()) { System.out.println("No Data Found."); } else { res.previous(); while(res.next()) { //code to display the data in the table. } }


Un método simple de getRowCount puede verse así:

private int getRowCount(ResultSet resultSet) { if (resultSet == null) { return 0; } try { resultSet.last(); return resultSet.getRow(); } catch (SQLException exp) { exp.printStackTrace(); } finally { try { resultSet.beforeFirst(); } catch (SQLException exp) { exp.printStackTrace(); } } return 0; }

Solo para tener en cuenta que este método necesitará un conjunto de resultados sensible al desplazamiento, de modo que al crear la conexión debe especificar la opción de desplazamiento. El valor predeterminado es FORWARD y el uso de este método le dará una excepción.


esta es mi solucion

ResultSet rs=Statement.executeQuery("query"); int rowCount=0; if (!rs.isBeforeFirst()) { System.out.println("No DATA" ); } else { while (rs.next()) { rowCount++; System.out.println("data1,data2,data3...etc.."); } System.out.println(rowCount); rowCount=0; rs.close(); Statement.close(); }


res.next() método res.next() llevará el puntero a la siguiente fila. y en su código lo está utilizando dos veces, primero para la condición if (el cursor se mueve a la primera fila) y luego para la condición while (el cursor se mueve a la segunda fila).

Entonces, cuando accede a sus resultados, comienza desde la segunda fila. Así se muestra una fila menos en los resultados.

puedes probar esto

if(!res.next()){ System.out.println("No Data Found"); } else{ do{ //your code } while(res.next()); }


rs.last(); int rows = rs.getRow(); rs.beforeFirst();


Statement st = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); ResultSet rs=st.executeQuery("select * from emp where deptno=31"); rs.last(); System.out.println("NoOfRows: "+rs.getRow());

La primera línea de código dice que podemos movernos a cualquier parte del conjunto de resultados (ya sea a la primera fila o la última fila o antes de la primera fila sin la necesidad de atravesar fila por fila a partir de la primera fila, lo que requiere tiempo). Una segunda línea de código busca los registros coincidiendo con la consulta aquí, supongo (25 registros), la tercera línea de código mueve el cursor a la última fila y la última línea de código obtiene el número de fila actual, que es 25 en mi caso. si no hay registros, rs.last devuelve 0 y getrow mueve el cursor hasta la primera fila, por lo que devolver un valor negativo indica que no hay registros en db