Erro no next() de ResultSet

3 respostas
D

Fala galera, to com o seguinte problema, tenho uma classe q chama outra q se conecta a um bd. No construtor dela tem isso:

bd = new BancoDados();
  Vector linha = new Vector();
  linha = bd.atualizaBD();

  for(int c=0; c<linha.size(); c++) {
      senhas.addRow( (Vector) linha.get(c) );
  }

Na outra classe…

public Vector atualizaBD() {
		
  conectaBD();
		
  Vector linhas = new Vector();
		
  try{
    statement = conexao.createStatement();
			
    String consulta = "SELECT CATEGORIA, LOCAL, DESCRICAO FROM SENHAS WHERE LOGIN='" + login + "' ORDER BY CATEGORIA";

    resultSet = statement.executeQuery(consulta);
			
    boolean maisDados = resultSet.next();
			
    ResultSetMetaData dados = resultSet.getMetaData();
			
    do {
      linhas.addElement( getProxLinha(dados) );
    } while( resultSet.next() );
			
    statement.close();
			
  }
  catch(SQLException sqlexc) {
			
    JOptionPane.showMessageDialog(null, sqlexc.toString(), "Erro", 00);
  }
		
  return linhas;
		
}//Fim de atualizaBD
	
private Vector getProxLinha(ResultSetMetaData dados) throws SQLException {
		
  Vector linhaAtual = new Vector(3);
		
  for (int c=1;c<=dados.getColumnCount();++c)
			
    switch( dados.getColumnType(c) ) {
      case Types.VARCHAR:
	        linhaAtual.addElement( resultSet.getString(c) );
	        break;
      case Types.INTEGER:
	        linhaAtual.addElement( new Long( resultSet.getLong(c) ) );
	        break;
      }
		
  return linhaAtual;
		
}//Fim de getProxLinha

Isso faz atualizar uma tabela. Não da nenhum problema na compilação mas quando eu executo aparece The resultSet is not in a row, use next e adiciona normal no bd, sem erros. Mas resultSet ja estava na proxima linha como vcs podem ver no codigo. Mesmo mudando o next() de lugar, ou da pau ou acontece a mesma coisa, alguem poderia dizer onde esta o erro?
:mad:

3 Respostas

D

opa… bele?

tente trocar isso:

por isso:

aliás… onde e pra q vc usa essa variável booleana maisDados
seria pra saber se o resultSet tem algum resultado?

nao sei se é isso… mas… tenta aí…

flw!

D

Blz valeu ae, deu perfeito, sobre a variavel maisDados eu ea usar depois, tava so fazendo um teste.
:lol:

N

Faz assim:

...
boolean maisDados = resultSet.next();
         
    ResultSetMetaData dados = resultSet.getMetaData();
     if(maisDados) {
    do {
      linhas.addElement( getProxLinha(dados) );
    } while( resultSet.next() );
    }

T+

Criado 26 de julho de 2004
Ultima resposta 26 de jul. de 2004
Respostas 3
Participantes 3