Testar se chegou ao final de um ResultSet!

8 respostas
M

PESSOAL,

Estou me inserindo agora no fórum e ja dei uma pesquisada geral e não achei nada para resolver o meu problema. Preciso testar o fim do ResultSet, só que dá erro, será que alguém pode me ajudar?
:smiley: Se possivel tb, onde acho uma dica para criar um Método (ou Classe)Genérico para Conectar a qquer bco de dados!

Obrigado!

Marcelo

private void mostraDados(Statement stmt) throws Exception {

String sql = “Select * from Ven_Vendedor”;

ResultSet rs = stmt.executeQuery(sql);

:arrow:     while (!rs.isLast()) {

rs.next();

System.out.println(rs.getString(1)+" "+rs.getString(2));

}

}

 ESSE ERRO:

java.sql.SQLException: Operação inválida para encaminhar apenas conjunto de resultados: isLast

at oracle.jdbc.dbaccess.DBError.throwSqlException DBError.java:180)

at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:222)

at oracle.jdbc.driver.OracleResultSetImpl.isLast(OracleResultSetImpl.java:291)

at pjtreport.Lista.mostraDados(Lista.java:31)

at pjtreport.Lista.jbInit(Lista.java:25)

at pjtreport.Lista.(Lista.java:13)

at pjtreport.Lista.main(Lista.java:8)

8 Respostas

D

faz assim

while (rs.next()) { //... }

carbaldi

Oi Marcelo,

Use o RS assim:

selectPstm = conn.prepareStatement(SQL_GET_DEPARTAMENTO);
selectPstm.setInt(1,produtoId.intValue());
rsDepartamento = selectPstm.executeQuery();
while (rsDepartamento.next()) {
   System.out.println(rsDepartamento.getInt("departamento_id"));
}

Sobre a conexão generica não sei se vc vai conseguir. pois cada banco tem seu JDBC e sua string de conexão (eu nunca ouvi falar em uma classe generica). A noticia boa é que basta acessar o site do banco que vc usa que vc terá grande chance de encontrar o JDBC e um exemplo na página deles.

Abraços e espero ter ajudado

M

dango

E se por acaso eu quisesse simplesmente testar o final do ResultSet, por explo:

while(true) {

rs.next();

if (rs.isLast()) {

break;

}

}

eu tentei fazer isso e ele dá o mesmo erro !

D

O que você quer saber é se a query produziu resultados (retornou registros) ?
Se for isso, apenas teste:

if (rs.next()) { // entao a query tem pelo menos 1 registro }

se não for isso, acho que tem a ver com o tipo do conjunto de resultados (que deve ser SCROLLABLE… ou algo parecido…) olha… não tenho certeza disso não!

espera alguém mais chegado nesses lances, ok?!

M

dango,

o que eu quero saber é, imagine que estou neste loop (while (true)…loop infinito) e estou executando o rs.next() quero saber se este próximo registro é final de ResultSet ou seja rs.isLast()=true.

acho que não havia sido claro! :slight_smile:

carbaldi

Marcelo,

No seu exemplo vc teria que fazer assim:

while(true) { 
if (rs.next()) { 
   break;
} 
}

Esqueça o rs.isLast().

Abraços

M

OK! VALEU PESSOAL, acho que dei uma viajada!!! 8)

M

acho que é excesso de código!!!
vou ficar louco!

Abraço!

Marcelo

:arrow: como coloco imagem associado ao meu login!

Criado 16 de maio de 2003
Ultima resposta 16 de mai. de 2003
Respostas 8
Participantes 3