Testar se chegou ao final de um ResultSet!

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

faz assim

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

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

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 !

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?!

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:

Marcelo,

No seu exemplo vc teria que fazer assim:

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

Esqueça o rs.isLast().

Abraços

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

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

Abraço!

Marcelo

:arrow: como coloco imagem associado ao meu login!