Erro ao adicionar item ao vector

8 respostas
soaresinfo

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)

8 Respostas

Rafael_Steil

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

soaresinfo

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));
Rafael_Steil

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

D

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

Rafael_Steil

“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)

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

Rafael

D

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]

soaresinfo

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

D

E a solução foi??

estamos ansiosos pra sabe
ehehe

Criado 4 de abril de 2004
Ultima resposta 5 de abr. de 2004
Respostas 8
Participantes 3