Pessoal, tenho uma dúvida boba que não consegui resolver:
tenho o metodo abaixo que uso para listar algumas informações:
[code]public List listarTodasCampanhas(String modelo, String item,String concessao,String mes) {
try {
conn = (Connection) ConnectionFactory.getConnection();
String sql = "Select * from listaCampanha where concessao like ? and modelo like ? and item like ?";
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setString(1, "%"+concessao+"%");
stmt.setString(2, "%"+modelo+"%");
stmt.setString(3, "%"+item+"%");
// stmt.setString(4, "%"+mes+"%");
ResultSet rs = stmt.executeQuery();
List<campanha> lista = new ArrayList();
while (rs.next()) {
campanha c = new campanha();
c.setId(rs.getInt(1));
c.setConcessao(rs.getString(2));
c.setModelo(rs.getString(3));
c.setItem(rs.getString(4));
c.setCodigo(rs.getString(5));
c.setPreco(rs.getString(6));
c.setMo(rs.getString(7));
c.setMes(rs.getString(8));
c.setValidade(rs.getString(9));
lista.add(c);
}
rs.close();
return lista;
} catch (Exception ex) {
Logger.getLogger(campanhaDaoMysql.class.getName()).log(Level.SEVERE, null, ex);
}
[/code]
Quando vou exibir esses dados no jsp, não mostro o mês nem a validade na tabela, porém preciso que a validade seja impressa na tela apenas uma vez, pois ela vem duplicada do banco:
consigo pegar apenas um valor pelo getValidade??
[code]
Concessionário |
Model |
Item |
Código |
Preço |
M.O |
</tr>
<%
List<campanha> lista = (List<campanha>)request.getAttribute("listaCampanhas");
if(lista!=null)
for(campanha c: lista){
%>
<tr bgcolor="#E8E8E8">
<td width="150px"><%=c.getConcessao()%></td>
<td width="150px"><%=c.getModelo()%></td>
<td width="500px"><%=c.getItem()%></td>
<td width="300px"><%=c.getCodigo()%></td>
<td width="100px"><%= c.getPreco()%></td>
<td width="100px"><%= c.getMo()%></td>
</tr>
<%
}
%>
</table>
// IMPRIMI AQUI A VALIDADE DESSA CAMPANHA
[/code]
coloca um distinct na sua select que ele tras a consulta sem duplicar. o que acha?
mauricio,
seguindo a sua idéia achei melhor fazer um metodo a parte, para não precisar mexer na estrutura, fiz o seguinte:
O metodo precisa receber o mês e o nome, pois assim a validade retornaria apenas um valor. [ me corrija se eu estiver errado por favor]
[code]public campanha pesquisarValidade( String mes, String concessao) {
try {
conn = (Connection) ConnectionFactory.getConnection();
//String sql = “select * from listaCampanha where modelo like”+"’%"+ modelo +"%’ and item like"+"’%"+ item +"%’" ;
String sql = “Select distinct validade from listacampanha where mes like ? and concessao like ?”;
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setString(1, "%"+mes+"%");
stmt.setString(2, "%"+concessao+"%");
ResultSet rs = stmt.executeQuery();
campanha c = new campanha();
while (rs.next()) {
c.setValidade(rs.getString(1));
}
rs.close();
return c;
} catch (Exception ex) {
Logger.getLogger(campanhaDaoMysql.class.getName()).log(Level.SEVERE, null, ex);
}
return null;
}[/code]
Estou fazer só um teste no meu servlet para saber se está retornando a validade correta:
[code]…
campanhaDaoMysql cDao = new campanhaDaoMysql();
System.out.println(cDao.pesquisarValidade(“DEZEMBRO”, “CIRASA”));
retorno:
bean.campanha@1735998[/code]
onde está o erro?
ta faltando escrever o toString do objeto campanha, a e vc vai conseguir testar.