Como faço pra "imprimir" valoresde ResultSet no HTML?

6 respostas
C
Pessoal eu estou fazendo uma aplicação web que acessa o banco mysql. Eu estou criando uma pagina de pesquisa ao banco. O script sql recebe os parametros de um form e usa esses parametros para fazer a consulta, ate ai funciona tudo bem,mas eu não estou conseguindo imprimir na tela (estou usando out.print) os valores guardados dentro de resultset. como eu gero umatabela com os valores de resultset? Uso Servlets. ...
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()!
...

6 Respostas

baudamix

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

C

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.

baudamix

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>
baudamix

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;
R

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!

C

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 :smiley: Valeu pela ajuda baudamix !

Criado 4 de abril de 2008
Ultima resposta 6 de abr. de 2008
Respostas 6
Participantes 3