Web Service Consulta no banco

Olá a todos,

montei um web service utilizando o axis, utilizando o banco de dados mysql, incluir alterar e excluir estão funcionando normalmente, mas o problema é que preciso consultar uns dados e nao sei como pegar esses dados, observem o metodo que criei para consultar:

public List listausu() throws SQLException
{
String sql = “select * from usuario”;
PreparedStatement stmt = this.connection.prepareStatement(sql);
ResultSet rs = stmt.executeQuery();

	List<usuarioDTO> list = new ArrayList<usuarioDTO>();
	
	while (rs.next())
	{
		usuarioDTO usuDTO = new usuarioDTO();
		usuDTO.setLogin(rs.getString("st_log_usu"));
		usuDTO.setSenha(rs.getString("st_senha_usu"));
		list.add(usuDTO);
	}
	
	rs.close();
	stmt.close();

	return list;
}

Como poderei montar esse método para que me retorne os dados dessa tabela?

Desde já agradeço a todos.

Aparentemente o seu método está correto. O mesmo preenche um ResultSet com todos os dados da tabela, adiciona na lista e a retorna.
Se você quer pegar todos os dados, cria um objeto do tipo List, no seu Main que receba o retorno desse método e em seguida, itere sobre ele, simples! O seu método, pelo que vi, já está retornando todos os dados em uma lista!

Agora se pretende consultar dados específicos e a tabela no banco consultado, tiver uma chave única para identificação (ID); é só passar a mesma como parâmetro na consulta (possibilidade).
Não sei se foi bem isso que você perguntou, mas se foi, não tem muito segredo.

Flw, boa sorte!

Obrigado pela atenção cara,

bom então esse meu método está correto certo ? e se eu precisasse disponibilizar esse método em um webservice para ser consumido por outra tecnologia como .net , seria dessa mesma maneira ?

tô usando para isso tomcat, axis, java

desde ja agradeço.

Em webservice vc não pode passar uma Lista, ele trabalha com tipos primitivos.

ok cara ,

então como seria um método para web service q retornace os dados de uma tabela ?

tô precisando muito dessa ajuda … veja ae se vc pode me dar uma forcinha …
desde já agradeço…

O que o Pedrosa falou, está certo mesmo.
Não tem como passar uma List (apesar da tecnologia .NET, possuir na sua implementação de Coleções, a ICollection, mas seria muito arriscado. Pelo menos, nunca tentei :slight_smile: ).
Algumas vezes, precisei passar informações de .NET pra Java, e vice-versa.
A melhor maneira que encontrei, foi gerar um documento XML, passar como se fosse um POST e carregar o mesmo do outro lado.

Referência:
http://msdn.microsoft.com/en-us/library/ms953968.aspx

Flw!

ok pessoal vou passar o cenário completo p v o que vcs acham .

vejam só, tenho um web service feito em java tomcat axis, os métodos de incluir alterar e excluir eu consigo invocar normalmento do .net, mas preciso de um método que retorne os dados do banco, como posso fazer isso nesse meu web service, sabendo - se que o web service em java será consumido pelo .net ?

desde já agradeço…

Não é a melhor maneira, mas usei uma vez assim, o método de acesso a dados esta correto, para poder passar uma String usei uma biblioteca que transforma objeto em xml ou seja uma String.
E publicava esse ws com Xfire.

Xtream
http://xstream.codehaus.org/tutorial.html

Mas fica esquesito uma String xml dentro de um ws que é um xml, portanto existem outro tipo de abordagem o ws restfull, o VRaptor tem uma solução bem legal, vale a pena dar uma olhada, onde vc gera uma pagina em JSON ou XML passando uma lista.

Artigo Blog da Caelum
http://blog.caelum.com.br/?s=granularidade

Cara, uma solução! Meio tosca eu acho, mas não deixa de ser uma solução! :lol:
Vi que você não gostou muito da idéia do XML :slight_smile:
Como o Pedrosa falou e como todos nós sabemos, a conversa dos WebServices (ou na maioria das vezes, sempre praticada), com tipos primitivos.
Pegando o seu método e mudando o tipo de retorno:

[code]public String retornaDados() throws SQLException
{
String sql = “select * from usuario”;
String dados="";
PreparedStatement stmt = this.connection.prepareStatement(sql);
ResultSet rs = stmt.executeQuery();

 while (rs.next())
 {
 usuarioDTO usuDTO = new usuarioDTO();
 usuDTO.setLogin(rs.getString("st_log_usu"));
 usuDTO.setSenha(rs.getString("st_senha_usu"));
 dados+=usuDTO.getLogin().toString()+ ", " +usuDTO.getSenha()+"\n";
 }

 rs.close();
 stmt.close();

 return dados;

} [/code]

E do outro lado (na consumação do WebService, em .NET), você recebe os dados e vai formatando com SubString.
Entendeu?
Um pouco trabalhoso devido aos SubStrings, mas dá certo!
Flw!

Vlw… pessoal, Agradeço muito mesmo … ajudaram bastante …

vou seguir a orientação de vcs … e colocar como string.

[quote=inscria]Vlw… pessoal, Agradeço muito mesmo … ajudaram bastante …

vou seguir a orientação de vcs … e colocar como string.[/quote]

Lembrando que: “não passa nem perto das melhores práticas, fazer dessa forma” :smiley:
Flw, boa sorte!

Simplifique sua vida:

http://blog.caelum.com.br/2006/11/08/ajax-no-vraptor-json-da-maneira-facil/

[quote=Pedrosa]Simplifique sua vida:

http://blog.caelum.com.br/2006/11/08/ajax-no-vraptor-json-da-maneira-facil/[/quote]

Loka essa maneira!
D+ mesmo!

Cara depois de quebrar muito a kbeça e desenvolvendo WebServices com JDBC, eu fiz assim:

//Listar todos os objetos do banco de dados
    @WebMethod(operationName = "listaTodosProdutos")
    public List<Produto> listaTodosProdutos() {
        //TODO write your implementation code here:
        //Consultar http://www.guj.com.br/posts/list/113128.java
        ArrayList<Produto> pd = new ArrayList<Produto>();

        try {
            Class.forName("org.postgresql.Driver");

            con = DriverManager.getConnection(URL_BASEDADOS, USUARIO, SENHA);

            stmt = con.createStatement();

            sql = ("SELECT *FROM PRODUTO");

            rs = stmt.executeQuery(sql);

            while (rs.next()) {
                Produto prod = new Produto();
                prod.setCodigo(rs.getInt("codigo"));
                prod.setDescricao(rs.getString("descricao"));
                prod.setMarca(rs.getString("Marca"));
                prod.setQuantidade(rs.getInt("quantidade"));
                prod.setValor(rs.getInt("valor"));
                pd.add(prod);
            }
            stmt.execute(sql);
        } catch (Exception e) {
            e.getMessage();
        }
        return pd;
    }

Embora não seja a melhor forma de se implementar Web Services eu fiz desta maneira.
Outra coisa que algumas pessoas podem encontrar dificuldades é qnto á classe bean.

Tem que fazer os construtores assim:

package org.ws;


import java.io.Serializable;



/**
 * @author AndrePush
 */
public class Produto implements Serializable {

    private static final long serialVersionUID = 1L;
    private int codigo;
    private String descricao;
    private String marca;
    private int quantidade;
    private int valor;
    private int total;

    public Produto() {
    }

    public Produto(int codigo) {
        this.codigo = codigo;
    }

    public Produto(int codigo, String descricao, String marca, int valor, int total) {
        this.codigo = codigo;
        this.descricao = descricao;
        this.marca = marca;
        this.valor = valor;
        this.total=total;
    }

    /**
     * @return the codigo
     */
    public int getCodigo() {
        return codigo;
    }

    /**
     * @param codigo the codigo to set
     */
    public void setCodigo(int codigo) {
        this.codigo = codigo;
    }

    /**
     * @return the descricao
     */
    public String getDescricao() {
        return descricao;
    }

    /**
     * @param descricao the descricao to set
     */
    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }

    /**
     * @return the marca
     */
    public String getMarca() {
        return marca;
    }

    /**
     * @param marca the marca to set
     */
    public void setMarca(String marca) {
        this.marca = marca;
    }


    /**
     * @return the valor
     */
    public int getValor() {
        return valor;
    }

    /**
     * @param valor the valor to set
     */
    public void setValor(int valor) {
        this.valor = valor;
    }

        /**
     * @return the quantidade
     */
    public int getQuantidade() {
        return quantidade;
    }

    /**
     * @param quantidade the quantidade to set
     */
    public void setQuantidade(int quantidade) {
        this.quantidade = quantidade;
    }

    /**
     * @return the total
     */
    public int getTotal() {
        return total;
    }

    /**
     * @param total the total to set
     */
    public void setTotal(int total) {
        this.total = total;
    }


    @Override
    public String toString() {
        return "Banco de Dados[codigo= " + codigo + ", descricao=" + descricao + ","
                + "marca=" + marca + ", valor=" + valor +",total=" +total+ "]";
    }
  
}

flw para todos…vivendo e aprendendo!!