forEach não exibe campo money do banco

2 respostas
Masami

olá!
bom.... vamos aos exemplos do meu problema:

tipo tenho uma tabela 'produto' no Postgre com os campos assim: codigo int, tipo varchar(10), decricao varchar(50), preco money.

tenho a seguinte função pra consulta no banco:
public Result getItem(String tipo) throws SQLException {
        try {
            con = ConnectionFactory.getConnection();
            pst = con.prepareStatement("SELECT codigo, tipo, descricao, preco FROM produto WHERE tipo=?");
            pst.setString(1, tipo);
            rs = pst.executeQuery();            
             return ResultSupport.toResult(rs);
        } finally {
            ConnectionFactory.closeConnection(con, rs, pst);
            System.out.println(pst.toString());
       }
}
envio os dados para uma pagina jsp atraves de um servlet assim:
request.setAttribute("rs", new meuDAO().geItem(request.getParameter("tipo")));
na pagina jsp tento exibir desta forma:
<table>
    <tr>
        <c:forEach var="columnName" items="${rs.columnNames}">
            <th><c:out value="${columnName}"/></th>
        </c:forEach>
    </tr>
    <c:forEach var="row" items="${rs.rowsByIndex}">
        <tr>
            <c:forEach var="column" items="${row}">
                <td><c:out value="${column}"/></td>
            </c:forEach>
        </tr>
    </c:forEach>
</table>
... so que não exibe nada na tabela, se eu tiro o campo money da consulta a tabela é exibida normalmente.

até tentei converter o campo money no select mas não consegui (...não entendo muito de sql).

de que forma poderia resolver esse problema?

2 Respostas

A

Masami:
olá!

pst = con.prepareStatement("SELECT codigo, tipo, descricao, preco FROM produto WHERE tipo=?");

olha, não entendi direito se money é um campo no teu sql ou se preco money é o teu campo, mas uma coisa eu sei, se no seu select você não mencionar este item e tentar invocá-lo você não conseguirá. Para conseguir isso tu vai ter que adicionar o campo(caso seja mesmo um).

ficaria assim marromenos:

pst = con.prepareStatement("SELECT codigo, tipo, descricao, preco, money FROM produto WHERE tipo=?");

de uma olhada nisso aí

Masami

… “preco” é um campo da minha tabela, só que este campo é do tipo money.
e aparentemente o forEach não consegue mostrar este tipo de dado ou o problema é na conversão do ResultSet para Result.

até já consegui resolver, mudei meu select convertendo o campo money para text, ficou assim:

SELECT codigo, tipo, descricao, preco::money::text FROM produto WHERE tipo=?

não sei se é a melhor forma para resolver isso…

Criado 16 de janeiro de 2010
Ultima resposta 18 de jan. de 2010
Respostas 2
Participantes 2