Foro sobre Java SE > Contar Registros
Despues de obtener el ResultSet con la sentencia rs= stm.executeQuery();
Puedes ir al final del resulset con rs.last();
Luego obtener el row con la sentencia int row = rs.getRow();
Carlos, gracias por contestar.
Probe lo que me dijiste, pero me da un error. Te paso el pedazo de codigo que utilizo para ver si me podes indicar donde le estoy errando. Cuando le agrego la linea last(), me da un error. el mismo codigo de conexion lo utilizo para otras cosas y funciona correctamente.
String userName = "sa";
String password = "";
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Connection con = DriverManager.getConnection("jdbc:sqlserver://10.125.100.2:1433;databasename=PGMV6;", userName, password);
Statement rstCuentaBusco = con.createStatement();
ResultSet txtCuentaBusco = rstCuentaBusco.executeQuery("SELECT * FROM personas");
txtCuentaBusco.last(); // Aca me da un error: La operación solicitada no es compatible en conjuntos de resultados exclusivamente de reenvío.
Otravez gracias y saludos
Podes cambiar la sentencia:
con.createStatement();
Por:
con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
Gracias por contestar.
Lo hice, pero me manda el siguiente error, te paso todo lo que dice (yo no entendi nada) mil gracias
abr 24, 2013 4:37:40 PM com.microsoft.sqlserver.jdbc.TDSReader throwInvalidTDS
Grave: ConnectionID:6 got unexpected value in TDS response at offset:262
com.microsoft.sqlserver.jdbc.SQLServerException: La secuencia del protocolo TDS no es válida.
at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:1352)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:1339)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.throwInvalidTDS(SQLServerConnection.java:1328)
at com.microsoft.sqlserver.jdbc.TDSReader.throwInvalidTDS(IOBuffer.java:3610)
at com.microsoft.sqlserver.jdbc.TDSReader.readSQLIdentifier(IOBuffer.java:4333)
at com.microsoft.sqlserver.jdbc.StreamTabName.applyTo(StreamTabName.java:41)
at com.microsoft.sqlserver.jdbc.StreamColumns.buildColumns(StreamColumns.java:91)
at com.microsoft.sqlserver.jdbc.SQLServerResultSet$1CursorInitializer.buildColumns(SQLServerResultSet.java:160)
at com.microsoft.sqlserver.jdbc.SQLServerResultSet.(SQLServerResultSet.java:285)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1504)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.doExecuteCursored(SQLServerStatement.java:1853)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.doExecuteStatement(SQLServerStatement.java:749)
at com.microsoft.sqlserver.jdbc.SQLServerStatement$StmtExecCmd.doExecute(SQLServerStatement.java:676)
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:4575)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1400)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:179)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:154)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeQuery(SQLServerStatement.java:611)
at Contable.jfrmPlanCuentasIngresos.jtxtNroCuentaActionPerformed(jfrmPlanCuentasIngresos.java:658)
at Contable.jfrmPlanCuentasIngresos.access$1500(jfrmPlanCuentasIngresos.java:33)
at Contable.jfrmPlanCuentasIngresos$15.actionPerformed(jfrmPlanCuentasIngresos.java:293)
at javax.swing.JTextField.fireActionPerformed(JTextField.java:508)
at javax.swing.JTextField.postActionEvent(JTextField.java:721)
at javax.swing.JTextField$NotifyAction.actionPerformed(JTextField.java:836)
at javax.swing.JFormattedTextField$CommitAction.actionPerformed(JFormattedTextField.java:1124)
at javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1661)
at javax.swing.JComponent.processKeyBinding(JComponent.java:2879)
at javax.swing.JComponent.processKeyBindings(JComponent.java:2926)
at javax.swing.JComponent.processKeyEvent(JComponent.java:2842)
at java.awt.Component.processEvent(Component.java:6281)
at java.awt.Container.processEvent(Container.java:2229)
at java.awt.Component.dispatchEventImpl(Component.java:4860)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Component.dispatchEvent(Component.java:4686)
at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1908)
at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:752)
at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1017)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:889)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:717)
at java.awt.Component.dispatchEventImpl(Component.java:4730)
at java.awt.Container.dispatchEventImpl(Container.java:2287)
at java.awt.Window.dispatchEventImpl(Window.java:2713)
at java.awt.Component.dispatchEvent(Component.java:4686)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
at java.awt.EventQueue.access$000(EventQueue.java:101)
at java.awt.EventQueue$3.run(EventQueue.java:666)
at java.awt.EventQueue$3.run(EventQueue.java:664)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.awt.EventQueue$4.run(EventQueue.java:680)
at java.awt.EventQueue$4.run(EventQueue.java:678)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
El problema está en que SQL entrega el result set posicionado antes del primer registro.
Hola a todos. Otra vez consultando.
Estoy tratando de contar los registros de un Resulset. Se que se podria hacer con un "select count(1) as miCantidadReg from tabla", pero no habra algo mas sencillo de tal forma que no tenga que hacer otra consulta. He probado varias formas, pero no logro hacer que me devuelva la cantidad de filas. No halgo asi como en Visual Basic que hace miRecordSet.Recordcount() y devuelve la cantidad de filas. Soy muuuuyyy nuevo en java siempre en Visual Basic 6, 2005 y 2010
Gracias y disculpas