Olá,
Quero fazer uma busca em banco de dados e retornar os dados em uma estrutura como de uma tabela. A classe java.sql.ResultSet já tem essa estrutura bidimensional (linhas e colunas), mas não é legal retornar um ResultSet no nome de uma função. Vector e Enumeration são lineares, então não serviria. Alguém conhece alguma classe assim, ou tem alguma sugestão?
Obrigado,
Adriano.
Classe com estrutura bidimensional
7 Respostas
Eu sugiro vc retornar um collection contendo beans, o que acha?
É simples e rápido.
[]´s
| Quote: |
|
Por que não se deve retornar um ResultSet em uma função?
André
| Quote: | |||
| |||
Até poderia retornar sim, mas segundo as técnicas de programação de gosling, não é recomendável o fechamento de um statement através de um resultset, a não seja que você queira manter seu statement vivo

Em últimos casos, o retorno por um rs, funcionaria tranquilamente…
[]´s
O correto é utilizar uma Collecton com Java Beans, abstraindo as tabelas do Banco, os famosos DBObjects. Nada que já não tenha sido dito antes.
O que é comum de se ver (principalmente qdo há um curtíssimo prazo para entrega do projeto), é uma HashTable populada com os dados do ResultSetMetaData. Desta maneira não é necessário criar cada Bean DBObject, e a mesma estrutura sere para qualque querie.
Mas, é de longe a solução mais porca de todas.
Se precisar de um exemplo, fale.
Retornar em ResultSet permitiria a manipulação dos dados da base (por exemplo, através dos métodos rowDeleted() ou rowInsert() ) no escopo de outra classe… Queria evitar isso.
Sei (ou pelo menos acho) que a melhor escolha seria manipular os dados com beans/collection, mas ainda não estou familiarizado com eles. A idéia parece boa. Vou estudar isso. Se alguém tiver um exemplo simples pra facilitar minha vida, eu agradeço.
t+
| Quote: |
|
Franklin, poderia me passar alguma referência dos DBObjects? Um exemplo da 2a solução tb seria bem vinda!
Desde já agradeço!
André
God is real, unless declared integer!
ps: Editada, pois eu não sei soletrar! :-?
[ Esta mensagem foi editada por: andrers2b em 12-03-2003 15:06 ]
método que retorna um collection
public Collection obterIncidentesOcorridos(String local){
ConectaBanco con = new ConectaBanco();
ResultSet rs = null;
Collection result = new ArrayList();
try{
rs = con.stm.executeQuery("select i.cod_incidente, i.data_incidente from incidente i, funcionario f where f.matricula = i.matricula_fk and f.local = \""+local+"\" and status_incidente = 'ocorrido'");
while (rs.next()){
Incidente incidente = new Incidente();
incidente.setCodIncidente(Integer.parseInt(rs.getString("cod_incidente")));
incidente.setDataIncidente(rs.getTimestamp("data_incidente"));
result.add(incidente);
}
}catch (SQLException e){
}
return result;
}
trecho do código que pega os dados do collection
if (resultIncidente.size()>0){
Iterator it1 = resultIncidente.iterator();
while (it1.hasNext()){
Incidente listaIncidente = (Incidente)it1.next();
funcionario = funcionario.obterDadosFunc(listaIncidente.getFuncionario().getMatricula());
…