Duvida: Retorno de consulta a banco sql

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!

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

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

[code]# 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;

} [/code]