Connection con;
Statement query;
ResultSet rs;
PrintWriter writer = response.getWriter();
String buscaCli = request.getParameter("busacaCli");
String paramPesquisa = request.getParameter("paramPesqusa");
if(paramPesquisa.contains("nome") || paramPesquisa.contains("empresa"))
{
condicao = paramPesquisa+" LIKE "+"'%"+buscaCli+"%'"; // Clausula WHERE para pesquisa por nome ou empresa;
}else{
condicao = paramPesquisa+" LIKE "+"'"+buscaCli+"'"; // Clausula WHERE para pesquisa por identidade ou cpf;
}
sql = WizardSQLQuery.selectAll("Clientes", condicao); //Script sql;
try {
con = ConnectionFactory.getConnection("Pousada", "usr", "123456");
query = con.createStatement();
rs = query.executeQuery(sql);
nome = rs.getString(1);
PrintWriter out = null;
out.println("Nome "+nome);
} catch (SQLException e) {
e.printStackTrace();
}
writer.println(sql);
writer.println(nome); //!retorna null mesmo tendo adicionado na string nome um valor de rs.getString()!
Como faço pra "imprimir" valoresde ResultSet no HTML?
6 Respostas
usa Servlets para carregar a resultset e manda a comllection para uma pagina JSP
<jsp:useBean id="dao" class="br.com.caelum.jdbc.dao.ContatoDAO"/>
<c:forEach var="contato" items="${dao.lista}">
<li>
nome: ${contato.nome},
email ${contato.email},
endereço ${contato.endereco}
</li>
</c:forEach>
dá uma olhada aki Cap9 JSTL
Na verrdade o que eu desejo seber e como dados vindos de um banco de dados que estão guardados em um objeto resultset podem ser escritos emuma tabela html… Mas valeu pela ajuda.
seu resultset é um lista de objetos certo? seguindo meu exemplo, se sua lista é um objeto contato vc tera que fazer como no code que coloquei.
os dados da lista no forEach por se repetirem e o que não se repete fora...
bele se precisar posta denovo
ex: class contato tem nome, telefone , end
seu html
<table>
<tr>
<td>Nome: </td>
<td>Telefone </td>
<td>Endereço</td>
</tr>
<c:forEach var="contato" items="${dao.lista}">
<tr>
<td>${contato.nome} </td>
<td>${contato.telefone} </td>
<td>${contato.end} </td>
</tr>
</c:forEach>
</table>
Opa... tá para guardar vc fazer o seguinte...
public Collection metodo() {
//o retorno pode ser outra classe de listagem enfim no meu exemplo
//usei a conllection mas poderia ser um arrayList ou hashmap ou lalari...
Collection c = new ArrayList();
// ...seu codigo , ou sua query que devolve seu resultset
rs = query.executeQuery(sql);
// ...pronto agora vc preenche o a collection com o resultado
while (rs.next()) {
Contato contato= new contato();//meu exemplo
if (rs.getString("NOME") != null) {contato.setNome(rs.getString("NOME")); }
if (rs.getString("TELEFONE") != null) {contato.setTelefone(rs.getString("TELEFONE)); }
if (rs.getString("END") != null) {contato.setEnd(rs.getString("END")); }
c.add(contato);
}
return c;
Se você estiver usando JSF pode usar o DataTable, tem diversas perguntas no fórum sobre isso (inclusive minhas… rsrs)
Abraço e boa sorte!
Deu certo,eu criei uma classe que constroi a tabela pra mim, ela ficou assim:
package dataBase;
import java.io.PrintWriter;
import java.sql.*;
public class PrintResultSet {
private ResultSet rs; // recebe uma referencia de um objeto ResultSet Configurado;
public PrintResultSet(ResultSet rs) throws SQLException{
this.rs = rs;
}
public void createHTMLTable(PrintWriter out,String caption) throws SQLException{
ResultSetMetaData md = rs.getMetaData();
out.print("<p style=\"font-family: Georgia,Helvetica,Arial,sans-serif; font-size:11px; text-align:center; background-color:#57f; color:#fff\">Aqui você poderá visualizar e alterar os campos do cadastro dos clientes. Para atualizar dados cadastris dos clientes você deverá ter acesso de <b>administrador</b> do sistema - Implementação futura.</p>");
out.print("<br/>");
out.print("<table style=\"font-family: Georgia,Helvetica,Arial,sans-serif; font-size:11px; text-align:center\">");
out.print("<Caption><b>"+caption+"</b></Caption>");
// Gera os nomes dos campos;
out.print("<tr>");
for(int i=1; i<=md.getColumnCount();i++ ){
out.print("<td style=\"padding:3px;width:auto;\">");
out.print(md.getColumnName(i));
out.print("</td>");
}
out.print("</tr>");
// Gera resultados das colunas
String[] estilo= new String[2];
estilo[0] = "background-color:#cbf";
estilo[1] = "background-color:#ccf";
String est = estilo[0];
int k = 0;
while(rs.next())
{
if(k%2 == 0){
est = estilo[1];
}else{
est = estilo[0];
}
out.print("<tr style=\""+est+"\">");
k++;
for(int i=1;i<=md.getColumnCount();i++){
out.print("<td style=\"padding:3px;width:auto; \">");
out.print(rs.getObject(i));
out.print("</td>");
}
out.print("</tr>");
}
out.print("</table>");
}
}
Eu chamo o método createHTMLTable() de printResultset da classe acima na classe que precisa construir a tabela e pronto. Ta resolvido o problema
Valeu pela ajuda baudamix !