Vetor com dados de pesquisa no bd

Ola!

Estava desenvolvendo meu projeto quando me dei de frente com um problema e vim perguntar aqui atras de respostas e sugestoes.

O Problema é o seguinte, eu quero guardar o resultado da pesquisa no BD em um vetor só que como eu vou declarar o vetor se eu ainda não sei o tamanho dele!
Ai vai a duvida tem como eu saber quantas linhas foram encontradas antes de percorer os resultados com while(rs.next())?

caso não aja como, gostaria de saber a opinião de vocês em que usar no lugar do vetor um ArrayList ou semelhantes

para deixar bem clara minha duvida ai vai o método que estou com problemas

public Tipo[] getTipos(){ Statement st = BD.abreST(); ResultSet rs = st.executeQuery("select * from tipov where num = "+num); Tipo[] tipo = new Tipo[????]; // que tamanho colocaria aqui???? int i; while(rs.next()){ tipo[i] new Tipo(rs.getInt("NUM"), rs.getFloat("PESO"), rs.getFloat("PRECO"), rs.getInt("QUANT"), rs.getInt("TIPO"), rs.getString("INFO")); } rs.close(); st.close(); return tipo; }

até mais!

Um método pronto eu desconheço. Mas existem algumas formas de se conseguir isto: http://www.guj.com.br/posts/list/2974.java

Se você quiser um array de uma única coluna do ResultSet, pode utlizar o método “getArray”. Mas pelo jeito não é o caso.

Quanto ao ArrayList, se não quiser retornar o ArrayList diretamente, pode utilizar o método toArray() para retornar um array a partir do seu ArrayList.

Tipo é uma classe certo?
Sempre que trabalhar com Objetos, nao coloque os dados no construtor, implements setters e getters,
pois fica mais facil.
2 - Sobre a Duvida Fica mais facil vc implementar um retorno de List…
tipo:

  public List getTipos(){  
      Statement st = BD.abreST();  
      ResultSet rs = st.executeQuery("select * from tipov where num = "+num);  
      List <Tipo> lista= new ArrayList();
      Tipo tipo = new Tipo();//Deixe o construtor padrao...
       while(rs.next())
      {  
          tipo.setNum(rs.getInt("NUM"));
          tipo.setPeso(rs.getFloat("PESO"));
          tipo.setPreco(rs.getFloat("PRECO"));
          tipo.setQuant(rs.getInt("QUANT"));
          tipo.setTipo( rs.getInt("TIPO"));
          tipo.setInfo( rs.getString("INFO"));
          lista.add(tipo);
      }  
      rs.close();  
      st.close();  
      return lista;  
  }  

para pegar os dados da lista faca assim:

  public void listarRegistros(){  
       
      List <Tipo> lista= getTipos();
      
      String Str = "";
      for( in i = 0 ; i < lista.size() ; i++ )
      {
          Tipo tipo = lista.get(i);
          str = tipo.getNum() +   tipo.getPeso() +    tipo.getPreco() +      tipo.getQuant() +     tipo.getTipo() +   tipo.getInfo() + "\n";
          System.out.println(str);
      }  

  }  

espero ter ajudado!

Obrigado aos dois mais acho que vou ficar com a List do jperondi mais vou tentar adaptar para passa pelo construtor

Eric Yuzo eu já tinha pensado num contador mas como li no tópico que me mandou dois select pode não ser uma boa escolha talvez faça uso do método toArray() antes de retornar

Obrigado mais uma vez!