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);
}
}