N�o poderia usar o m�todo last() e depois o getRow() ?
last()
Moves the cursor to
the last row in this ResultSet object.
getRow()
Retrieves the
current row number
Acredito que funcione
mas n�o sei se � aconselh�vel !
-----Mensagem original-----
De: Maiko A. Rocha [mailto:[EMAIL PROTECTED]
Enviada em: s�bado, 5 de julho de
2003 13:09
Para: [EMAIL PROTECTED]org.br; [EMAIL PROTECTED]com.br
Assunto: Re: [enterprise-list]
Quantidade de Registros num RecordSet
S� evitem fazer count(*) e sim count(1), pois o asterisco vai fazer o banco
armazenar o conte�do de todas as colunas durante a execu��o do count.
Em linhas gerais, a dica
� a seguinte:
1. Se a qtd. de registros a ser retornada � pequena - entre 100 e 500,
por exemplo - melhor trazer logo tudo, economizando uma consulta ao banco para
fazer o count. N�o esque�a de configurar o m�todo setFetchSize()
do Statement/PreparedStatement para um tamanho razo�vel - algo entre 10 e 50 -
mas isso depende tamb�m do tipo de processamento a ser feito com os registros.
2. Caso a qtd. seja muito grande, vale mais apena fazer um count(*) no
banco.
Maiko
Marcelo Ivan Martin
<[EMAIL PROTECTED]com.br> wrote:
Ja passei por esse
problema, a maneira para lidar com a situa��o foi a
seguinte:
considere o m�todo conta() e o lista(), ambos chamam o select(...) por�m
passando o tipo.
dependendo do tipo passado o metodo select(...) pega
as colunas corretamente
pelo colunasConsulta(tipo);
� "mais r�pido" fazer um select count(*) do que carregar todo o
conteudo no
recordset antes.
...
public String colunasConsulta(byte tipoConsulta){
String strSQL = "";
if (tipoConsulta == SELECT_LISTA){
if (bColunasSelect) {
strSQL = strColunasSelect;
} else {
strSQL = strSQL + "cntb_Diario.cod_Livro, " ;
strSQL = strSQL + "cntb_Diario.seq_Exercicio, " ;
...
}
} else {
strSQL = strSQL + "COUNT(*) numReg " ;
}
...
public void lista() throws Exception{
select(SELECT_LISTA);
}
...
public long conta() throws Exception{
select(SELECT_CONTA);
if (rs.next()){
return rs.getLong(1);
} else {
return 0;
}
}
...
private void select(byte tipo) throws Exception{
...
String strSQL = "SELECT ";
strSQL = strSQL + colunasConsulta(tipo);
if (gJoin.compareTo("")==0){
strSQL = strSQL + " FROM cntb_Diario \n" ;
strSQL = strSQL + " LEFT JOIN cntb_Exercicio
seq_Exercicio_cntb_Exercicio \n" ;
strSQL = strSQL + " ON cntb_Diario.seq_Exercicio =
seq_Exercicio_cntb_Exercicio.seq_Exercicio \n" ;
} else {
strSQL = strSQL + gJoin;
} if (strWhere.compareTo("")!=0){
strSQL = strSQL + " WHERE " + strWhere;
}
if (bFiltraGroupBy){
strSQL = strSQL + " GROUP BY " + strGroupBy;
}
if (bFiltraOrderBy && tipo == SELECT_LISTA){
if (strOrderBy.compareTo("")!=0){
strSQL = strSQL + " ORDER BY " + strOrderBy;
}
} else {
strSQL = strSQL + " ORDER BY 1";
}
Espero ter ajudado...
___________________
Marcelo Ivan Martin
(55) 51 - 9841 5289
Martin Cons. e Des. Ltda
----- Original Message -----
From: "Pedro Burglin"
<[EMAIL PROTECTED]>To:
<[EMAIL PROTECTED]>Sent: Wednesday, July 02, 2003 5:45 PM
Subject: Re: [enterprise-list] Quantidade de Registros num RecordSet
> Esse metodo nao retorna o numero de linhas de um ResultSet, mas sim o
> numero maximo de linhas que este PODERA ter. Se o numero de linhas passar,
> estas serao desprezadas.
>
> de acordo com a documentacao:
> "Retrieves the maximum number of rows that a ResultSet object
produced by
> this Statement object can contain. If this limit is exceeded, the excess
> rows are silently dropped."
>
> e a documentacao do setMaxRows:
> "Sets the limit for the maximum number of rows that any ResultSet
object
can
> contain to the given number. If the limit is exceeded, the excess rows are
> silently dropped."
>
>
> ----- Original Message -----
> From: "naipassac"
<[EMAIL PROTECTED]>> To:
<[EMAIL PROTECTED]>> Sent: Wednesday, July 02, 2003 8:26 AM
> Subject: Re: [enterprise-list] Quantidade de Registros num RecordSet
>
>
> > Fernando,
> >
> > Na vers�o 1.4 do J2SE na package java.sql,
na interface
> > Statement, tem um m�todo chamado getMaxRows(), que retorna o
> > n�mero de linhas de um ResultSet.
> >
> > Espero q tenha ajudado.
> >
> > Rodrigo Cassapian
> >
> > > Humm... esta pergunta j� apareceu na
lista. D� uma procurada
> > no hist�rico.
> > > Acho que n�o tem um jeito legal, n�o.
> > >
> > > ----- Original Message -----
> > > From: "JOSE FERNANDO ALVES PEREIRA" <[EMAIL PROTECTED]
> > com>
> > > To:
<[EMAIL PROTECTED]>> > > Sent: Tuesday, July 01, 2003
2:22 PM
> > > Subject: [enterprise-
> > list] Quantidade de Registros num RecordSet
> > >
> > >
> > > > E ai pessoal,
> > > >
> > > > Alguem sabe alguma forma de retorna a quantidade de regist
> > ros retornados
> > > por
> > > > um recordSet?
> > > >
> > > > Existe algo assim: recordSet.Count()?
> > > >
> > > > Valeu....
> > > >
> > > > Fernando.
> > > >
> > > > __________________________________________________________
> > _______
> > > > MSN Hotmail, o maior webmail do Brasil. http://www.hotmai
> > l.com
> > > >
> > > >
> > > > ----------------------------------------------------------
> > -----------
> > > > Para cancelar a subscri��o, envie mensagem para:
> > > [EMAIL PROTECTED]org.br
> > > > Para comandos adicionais, envie mensagem para:
> > > [EMAIL PROTECTED]org.br
> > > >
> > > >
> > >
> > >
> > >
> > > ------------------------------------------------------------
> > ---------
> > > Para cancelar a subscri��o, envie mensagem para: enterprise-
> > [EMAIL PROTECTED]org.br
> > > Para comandos adicionais, envie mensagem para: enterprise-
> > [EMAIL PROTECTED]org.br
> > >
> > >
> >
> >
> > ---
> > UOL, o melhor da Internet
> > http://www.uol.com.br/
> >
> >
> > ---------------------------------------------------------------------
> > Para cancelar a subscri��o, envie mensagem para:
> [EMAIL PROTECTED]org.br
> > Para comandos adicionais, envie mensagem para:
> [EMAIL PROTECTED]org.br
> >
>
>
> ---------------------------------------------------------------------
> Para cancelar a subscri��o, envie mensagem para:
[EMAIL PROTECTED]org.br
> Para comandos adicionais, envie mensagem para:
[EMAIL PROTECTED]org.br
>
>
---------------------------------------------------------------------
Para cancelar a subscri��o, envie mensagem para:
[EMAIL PROTECTED]org.br
Para comandos adicionais, envie mensagem para: [EMAIL PROTECTED]org.br
Yahoo! Mail
Mais espa�o, mais seguran�a e gratuito: caixa postal de 6MB, antiv�rus,
prote��o contra spam.
|