Erro ao adicionar item ao vector

Eu consigo recuperar os nomes das colunas de uma tabela do access, mas nao consigo colocar os registros no vector eu testei se retornava algum registro e retorna, mas dá um erro dizendo “data not found”. Não termina nem a primeira iteração do for…

  public Vector getDadosConsulta(ResultSet rs,ResultSetMetaData rsmd){
    Vector vLinha = new Vector();


    try{
      rs.next();
      
      do{
        for(int i = 1; i <= rsmd.getColumnCount(); ++i){
          vLinha.addElement(rs.getObject(i));
          
        }
        vDados.addElement(vLinha);
        
      } while(rs.next());
      return vDados;
    }
    catch(SQLException sqlex){
      JOptionPane.showMessageDialog(null,"Houve um erro","Erro",JOptionPane.ERROR_MESSAGE);
      sqlex.printStackTrace();
      sqlex.getLocalizedMessage();
    }
    catch(Exception e){
      e.printStackTrace();
    }
    return vDados;
  }

E o erro é o seguinte:

java.sql.SQLException: No data found
        at sun.jdbc.odbc.JdbcOdbc.standardError(JdbcOdbc.java:4270)
        at sun.jdbc.odbc.JdbcOdbc.SQLGetDataInteger(Compiled Code)
        at sun.jdbc.odbc.JdbcOdbcResultSet.getDataInteger(Compiled Code)
        at sun.jdbc.odbc.JdbcOdbcResultSet.getInt(Compiled Code)
        at sun.jdbc.odbc.JdbcOdbcResultSet.getObject(Compiled Code)
        at ObtemDadosBD.getDadosConsulta(ObtemDadosBD.java:36)
        at TestaConectividade.getTabela(TestaConectividade.java:44)
        at TestaConectividade.<init>(TestaConectividade.java:31)
        at TestaConectividade.main(TestaConectividade.java:66)

Tu ta dando um rs.next() mas nao esta verificando se algum conteudo foi retornado. Faca a verificacao. Algo como

if (rs.next()) {
    // processa os dados
}
else {
    // nenhum conteudo encontrado
}

Rafael

Eu disse que consigo recuperar os dados no banco mas nao consigo adiciona-los no vector. Eu fiz um teste:

JOptionPane.showMessageDialog(null,rs.getObject(i));

E ele me retorna o valor.

O erro ocorre na linha:

vLinha.addElement(rs.getObject(i));

ok, entao coloque um breakpoint na linha q da erro e vai dando step over ate ver em que parte do loop ocorre o problema…

RAfael

Soaresinfo,

Sei lá, eu fui escrever a resposta mas ai comecei a pensar e fiquei com duvida sobre se eu tava certo ou não (para né? se nem o cara que responde sabe se tah certo é fodX…);

    for(int i = 1; i &lt;= rsmd.getColumnCount(); ++i)

troca por

for(int i = 1 ; i<=rsmd.getColumnCount(); i++ )
ou
for (int i=0 ; i<=rsmd.getColumnCount();++i)

sei lah

[quote=“Daniel Machado”]Soaresinfo,
for(int i = 1; i <= rsmd.getColumnCount(); ++i)

troca por

for(int i = 1 ; i<=rsmd.getColumnCount(); i++ )
ou
for (int i=0 ; i<=rsmd.getColumnCount();++i)

[/quote]

No caso do ResultSet, os itens comecao de fato em 1.

Rafael

Rafael,

É, to ligado.
O que pensei foi assim

como tava escrito ++i, então podia ser que o i começasse do 1, ai ele ia pra 2 (++i e nao i++) e depois executava o for

Ai não lembro como o for funciona
Acho q era tipo, primeiro ele ve a condição, executa o bloco e depois faz a alteração (no caso increment).

Mas como não tinha certeza deixei ai.

:smiley:
[s]

Eu consegui resolver o problema, deu um pau na maquina tive que reiniciar sem salvar e refazer boa parte do codigo.
Valeu pela ajuda…

E a solução foi??

estamos ansiosos pra sabe
ehehe