Quantidade de Registros! no ResultSet?

ai galera existe alguma maneira de pegar quantos registros a consulta retornou pelo ResultSet ou ResultSetMetadata, sei la (tipo RecordCount no Delphi)??

Chama last():
http://java.sun.com/j2se/1.5.0/docs/api/java/sql/ResultSet.html#last()

Depois chama getRow():

http://java.sun.com/j2se/1.5.0/docs/api/java/sql/ResultSet.html#getRow()

Não sei se dá pra pegar diretamente não.

vlw!! vou dar uma olhada!!

não existe.
ou faz com foi sugerido, ou cria um contador e itera pelo ResultSet.

não sei como ainda não implentaram isso…

[]'s

só complementando

depois que você pegar a quantidade de registros, se você deve usar o método
http://java.sun.com/j2se/1.5.0/docs/api/java/sql/ResultSet.html#beforeFirst()

caso ainda queira pegar os dados do ResultSet

[]´s

[quote=rodrigo_gomes]só complementando

depois que você pegar a quantidade de registros, se você deve usar o método
http://java.sun.com/j2se/1.5.0/docs/api/java/sql/ResultSet.html#beforeFirst()

caso ainda queira pegar os dados do ResultSet

[]´s[/quote]
muito bem lembrado :thumbup:

[]'s

[quote=Maurício Linhares]Chama last():
http://java.sun.com/j2se/1.5.0/docs/api/java/sql/ResultSet.html#last()

Depois chama getRow():

http://java.sun.com/j2se/1.5.0/docs/api/java/sql/ResultSet.html#getRow()

Não sei se dá pra pegar diretamente não.[/quote]

E isso nem sempre funciona.

Supomos que vc está usando o oracle por exemplo, se fizer um select numa tabela de 20000 registros ele não vai retornar tudo de uma vez, ele vai retornando aos poucos… e isso pode gerar um erro ou até mesmo uma perda de performance muito grande.

Acho que o melhor a se fazer é um select count(*) e ver a quantidade por ele…

:roll:

Veja a definição do método, se ele não cumprir é problema do driver não de quem usa ele.

[quote=Result Set (Java 2 Platform SE 5.0)]last

boolean last()
throws SQLException

Moves the cursor to the last row in this ResultSet object.

Returns:
    true if the cursor is on a valid row; false if there are no rows in the result set 
Throws:
    SQLException - if a database access error occurs or the result set type is TYPE_FORWARD_ONLY
Since:
    1.2

[/quote]

Valeu pelas dicas galera!! mas acho que c for soh pra saber a quantidade de registros mesmo!! ficaria melhor com um count(*) mesmo!!, ate pela performance do sistema! ficar dando last e depois first ou beforefirst, acho que nao vira muito nao!!! A minha intençao era usar, se houvese o “getRowCount”, em estruturas de controle ou mesmo loops!!, mas ta blz!! em loop da pra usar o while rs.next()!!! Mas valeu, daqui uns dia, quando eu tiver mais interado com a linguagem, quem sabe agente implementa o getRowCount()!! hehe!! 8)

bom, se vc só vai pegar a quantidade de registros e não vai usar os dados vai fundo no select count(*)

mas atente ao fato de que se vc for fazer um select count pra pegar quantidade de registros e depois fazer o select de novo pra pegar os dados, isso pode ser muito mais custoso do que executar os métodos acima, dependendo de sua select (já que vc vai ta executando a query 2 vezes)

[]´s

Senhores…

Fiz um exemplo bem completo que espero ajudar a todos que tenham duvidas em:

Testar o uso do driver JDBC
Conectar a uma base de dados MySql usando um driver JDBC
Um contador de Registros de Resultset

import java.sql.*;

public class ConnectaMySql {

public static void main(String[] args) throws SQLException {
	Connection conn = null;
	try {
	// Carregando o JDBC Driver
	String driverName = "com.mysql.jdbc.Driver"; 
	Class.forName(driverName);

	// Criando a conexão com o Banco de Dados
	String serverName = "localhost";
	String mydatabase = "Nome_do_seu_banco";
	String url = "jdbc:mysql://" + serverName + "/" + mydatabase; // a JDBC url
	String username = "Nome_do_Usuario";
	String password = "Sua_Senha";
	conn = DriverManager.getConnection(url, username, password);
	//se ok ele manda essa msg
	System.out.println("Conectado!");

	} catch (ClassNotFoundException e){
	//Driver não encontrado
	System.out.println("O driver expecificado não foi encontrado.");

	} catch (SQLException e) {
	//Não está conseguindo se conectar ao banco
	System.out.println("Não foi possível conectar ao Banco de Dados");
	}

	//Varrendo os registros e exibindo no console..
	String sql = "SELECT * FROM Sua_Tabela";
	PreparedStatement stmt = conn.prepareStatement(sql);
	ResultSet rs= stmt.executeQuery();
	//contador de registros encontrados:
	int Contador = 0;
	while(rs.next()){										                                   //mesmo usando um select *, nesse ponto defino que quero usar	
		System.out.println(rs.getString("Seu_Campo")+ " " + rs.getString("Seu_outro_Campo"));  // somente os campos que eu quero, nesse caso RG e Nome
		Contador ++;
	}
	//exibindo a quantidade de registros encontrados:
	System.out.println("Registros Encontrados: " + Contador);
	
}

}