Registros

Na interface ResultSet, qual é o método que uso para pegar a quantidade de registros retornados de uma consulta sql?

          String selectStatement = "select t_nf.* , t_cod_oper.v_descricao ,t_transp.v_endereco from t_nf,t_cliente_fornecedor,t_cod_oper,t_transp";
                 selectStatement = selectStatement + "where t_cliente_fornecedor.v_cgc_cpf_fatur=t_nf.v_codclifornec and t_nf.v_cod_oper=t_cod_oper.v_cod_oper and t_nf.v_codtransp=t_transp.v_codtransp and";
                 selectStatement = selectStatement + "f_num_nf=157";
     
          

           PreparedStatement prepStmt=con.prepareStatement(selectStatement);
           ResultSet rs = prepStmt.executeQuery();

Não existe tal método na interface ResultSet.
O que você pode fazer é algo tipo

int count = 0; while(rs.next) count++;

e depois dar um first() pra voltar para o início do ResultSet.

Eu estava pesquisando e e percebi que não havia, poderia ser implementado isto, vc não acha?

Falow

O problema é que nem sempre o ResultSet é inteiro carregado logo que é executado e tal. Assim essa implementação básica tem uma melhor performance do que se ele sempre tiver que realizar esse passo a mais para checar o tamanho do ResultSet.

O que você pode fazer também é colocar um COUNT no seu SELECT mesmo e aí pegar o valor deste campo.

Não há um método para retornar o número de registros pois os bancos diferem muito nesse ponto, e muitos deles vão trazendo os registros para o resultSet a medida que você vai executando resultSet.next();

Se você realmente necessita saber quantos registros tem você pode utilizar o método descrito pelo Bani, mas pode demorar bastante dependendo do tamanho de registros retornados, é sempre bom levar isso em consideração.

Em tempo, procure evitar a concatenação de Strings no modo como você fez, é mais eficiente utilizar o StringBuffer, tem um artigo no Guj que explica isso:

http://www.guj.com.br/servlet/guj?PARSE=true&MAMUTE_ACTION=br.com.guj.action.ListArticle&MAMUTE_TEMPLATE=ShowArticle&LIST_ARTICLE=single&ArticleId=3&PAGE=1

Qualquer dúvida é só postar um tópico que sempre tem alguém pra ajudar. :smiley:

Fazer

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

eh mais rapido que fazer

int count = 0;
while (rs.next())
    count++'

Rafael