Duvida: Retorno de consulta a banco sql

2 respostas
B

Pessoal, boa tarde!

preciso de uma ajuda:
Eu estou desenvolvendo um webservice que possui a função de exibir os titulos de livros referente a um autor pesquisado.
A busca eh feita em um banco mysql.
Construi o bloco abaixo como teste e esta rodando normalmente, porem o retorno eh dado somente com o primeiro dado encontrado:

public TituloDoAutor getTituloDoAutor(String autor) { Connection conn = (Connection) MessageContext.getCurrentMessageContext().getProperty( DBSampleServiceLifeCycle.DB_CONNECTION); if(conn !=null) { String SQL = "SELECT TITULO FROM LIVRO WHERE AUTOR=?"; try { PreparedStatement statement = conn.prepareStatement(SQL); statement.setString(1, autor); ResultSet result = statement.executeQuery(); if (result.next()) { TituloDoAutor tituloDoAutor = new TituloDoAutor(); tituloDoAutor.setTitulo(result.getString("TITULO")); return tituloDoAutor; } } catch (SQLException e) { e.printStackTrace(); } } return null; }

alguem tem alguma dica de como fazer para retornar todos que forem encontrados?
tentei fazer um loop com while e lista mas nao deu certo.nao sei se estou completamente errado no codigo abaixo(lembrando que meu conhecimento em java e sql eh o menor possivel). Alguem conseguiria dar uma ajuda? Segue:

public TituloDoAutor[] getTituloDoAutor(String autor) { Connection conn = (Connection) MessageContext.getCurrentMessageContext().getProperty( DBSampleServiceLifeCycle.DB_CONNECTION); if(conn !=null) { String SQL = "SELECT TITULO FROM LIVRO WHERE AUTOR=?"; try { PreparedStatement statement = conn.prepareStatement(SQL); statement.setString(1, autor); ResultSet result = statement.executeQuery(); ArrayList list = new ArrayList(); while (result.next()) { TituloDoAutor tituloDoAutor = new TituloDoAutor(); tituloDoAutor.setTitulo(result.getString("TITULO")); list.add(tituloDoAutor); return (TituloDoAutor[])list.toArray(new TituloDoAutor[list.size()]);} } catch (SQLException e) { e.printStackTrace(); } } return null; }

muito obrigado!

2 Respostas

S

É só tirar o return de dentro do laço while, coloca ele no fim do metodo onde vc retorna “null”

B

Vlw Sliver, eh isso mesmo cara, resolvido. :)
muito obrigado pelo toque...vou deixar abaixo, caso sirva de exemplo para alguem, usem a vontade.

# public TituloDoAutor[] getTituloDoAutor(String autor) {  
#     Connection conn = (Connection) MessageContext.getCurrentMessageContext().getProperty(  
#             DBSampleServiceLifeCycle.DB_CONNECTION);  
#     if(conn !=null) {  
#         String SQL = "SELECT TITULO FROM LIVRO WHERE AUTOR=?";  
#         try {  
#             PreparedStatement statement = conn.prepareStatement(SQL);  
#             statement.setString(1, autor);  
#             ResultSet result = statement.executeQuery();  
#             ArrayList list = new ArrayList();  
#             while (result.next()) {  
#                TituloDoAutor tituloDoAutor = new TituloDoAutor();  
#                tituloDoAutor.setTitulo(result.getString("TITULO"));          
#                list.add(tituloDoAutor); }
#             return (TituloDoAutor[])list.toArray(new TituloDoAutor[list.size()]);
#             } catch (SQLException e) {  
#             e.printStackTrace();  
#         }  
#     }  
#     return null;  
# }
Criado 1 de dezembro de 2009
Ultima resposta 1 de dez. de 2009
Respostas 2
Participantes 2