Olá pessoal do GUJ,
Estou há tempos tentando encontrar a solução para este tópico que iniciei agora, como fazer um select no banco de dados para mostrar uma coleção ou array.
Já procurei em todo o GUJ, mas não encontro a solução para este meu problema.
Para fim de teste fiz um WebService que faz CRUD. Com ele eu consigo fazer o INSERT para p/ o Banco de Dados, mas os SELECTs não funcionam. Por exemplo o meu método q eu qro mostra tudo o que tem no banco de dados getListaTodosProdutos(); ->deêm uma olhada neste método por favor.
Abaixo está o exemplo:
Esta é a minha classe Produto.
package org.ws;
import java.io.Serializable;
/**
*
* @author AndrePush
*/
public class Produto implements Serializable {
private static final long serialVersionUID = 1L;
private Integer codigo;
private String descricao;
private String marca;
private int quantidade;
private int valor;
public Produto() {
}
public Produto(Integer codigo) {
this.codigo = codigo;
}
public Produto(Integer codigo, String descricao, String marca, int quantidade, int valor) {
this.codigo = codigo;
this.descricao = descricao;
this.marca = marca;
this.quantidade = quantidade;
this.valor = valor;
}
/**
* @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 quantidade
*/
public int getQuantidade() {
return quantidade;
}
/**
* @param quantidade the quantidade to set
*/
public void setQuantidade(int quantidade) {
this.quantidade = quantidade;
}
/**
* @return the valor
*/
public int getValor() {
return valor;
}
/**
* @param valor the valor to set
*/
public void setValor(int valor) {
this.valor = valor;
}
@Override
public String toString() {
return "DataBase[codigo= " + codigo + ", descricao="+descricao+"," +
"marca="+marca+", quantidade="+quantidade+", valor=" + valor +"]";
}
}
Logo abaixo minha classe que implementa o SEI ou interface e nesta eu tbm coloquei a comunicação com o banco de dados.
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package org.ws;
import java.sql.Statement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.DriverManager;
import java.util.ArrayList;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import java.util.List;
/**
*
* @author AndrePush
*/
@WebService()
public class AtacadoInformaticaWs {
private static final String URL_BASEDADOS =
"jdbc:postgresql://localhost:5432/COMERCIO";
private static final String USUARIO = "postgres";
private static final String SENHA = "pushandre26";
private Connection con;
private Statement stmt;
private ResultSet rs;
String sql;
//Instancia do objeto produto
Produto produto;
@WebMethod(operationName = "compraProduto")
public String compraProduto(@WebParam(name = "descricao") String descricao) {
try {
Class.forName("org.postgresql.Driver");
con = DriverManager.getConnection(
URL_BASEDADOS, USUARIO, SENHA);
stmt = con.createStatement();
sql = ("SELECT descricao,marca,quantidade,valor FROM PRODUTO WHERE"
+ " descricao " + produto.getDescricao());
stmt.execute(sql);
// Se existe o produto compra-lo
while (rs.next()) {
produto.setDescricao(rs.getString(1));
produto.setMarca(rs.getString(2));
produto.setQuantidade(rs.getInt(3));
produto.setValor(rs.getInt(4));
}
rs = stmt.executeQuery(sql);
} catch (Exception e) {
e.getMessage();
}
try {
con.close();
} catch (Exception e) {
e.printStackTrace();
}
return compraProduto(compraProduto(descricao));
}
//Listar todos os objetos do banco de dados
@WebMethod(operationName = "getListaProdutoGeral")
public ArrayList<String> getListaProdutoGeral() {
//TODO write your implementation code here:
// String dados="";
try {
Class.forName("org.postgresql.Driver");
con = DriverManager.getConnection(URL_BASEDADOS, USUARIO, SENHA);
stmt = con.createStatement();
sql = ("SELECT *FROM PRODUTO");
//Consultar http://www.guj.com.br/posts/list/113128.java
rs = stmt.executeQuery(sql);
while (rs.next()) {
produto.setCodigo(rs.getInt("codigo"));
produto.setDescricao(rs.getString("descricao"));
produto.setMarca(rs.getString("Marca"));
produto.setQuantidade(rs.getInt("quantidade"));
produto.setValor(rs.getInt("valor"));
}
} catch (Exception e) {
e.getMessage();
}
return getListaProdutoGeral();
}
/**
* Operação de serviço web
*/
@WebMethod(operationName = "cadastrarProduto")
public String cadastrarProduto(
//PRODUTO
@WebParam(name = "codigo") int codigo,
@WebParam(name = "descricao") String descricao,
@WebParam(name = "marca") String marca,
@WebParam(name = "quantidade") int quantidade,
@WebParam(name = "valor") int valor) {
//TODO write your implementation code here:
try {
Class.forName("org.postgresql.Driver");
con = DriverManager.getConnection(
URL_BASEDADOS, USUARIO, SENHA);
stmt = con.createStatement();
sql = ("INSERT INTO PRODUTO(codigo,descricao,marca,"
+ "quantidade,valor)VALUES('" + codigo + "','" + descricao
+ "','" + marca + "','" + quantidade + "','" + valor + "')");
stmt.execute(sql);
while (rs.next()) {
//Produto
produto.setCodigo(rs.getInt(1));
produto.setDescricao(rs.getString(7));
produto.setMarca(rs.getString(3));
produto.setQuantidade(rs.getInt(4));
produto.setValor(rs.getInt(5));
}
//rs = stmt.executeQuery(sql);
stmt.executeUpdate(sql);
con.commit();
stmt.close();
} catch (Exception e) {
return e.getMessage();
}
return cadastrarProduto(codigo, descricao, marca, quantidade, valor);
}
}
Como eu já disse eu consigo fazer o INSERT mas no SELECT não funciona quanto eu quero mostrar todos os produtos que estão no banco de dados.A aplicação parece que entra em um loop eterno ou não consegue achar o banco de dados, dai eu tenho que abortar a pesquisa no BD.
Por favor preciso de ajuda, tenho que entregar este projeto no serviço.
aguardo respostas.