Você está aqui: JSF - Java Server Faces ::: JSF HTML Tags :::

Como retornar os registros de uma tabela do banco de dados e fornecê-los para exibição em um controle <h:dataTable> como um objeto da interface ResultSet

Quantidade de visualizações: 8706 vezes
A propriedade value do controle <h:dataTable> nos permite definir a fonte dos dados a serem exibidos na tabela HTML gerada por esta tag. Entre as fontes de dados aceitáveis está um objeto da interface java.sql.ResultSet. Isso quer dizer que podemos disparar um comando SQL SELECT em uma tabela do banco de dados e já passar os dados diretamente para o <h:dataTable>, sem a necessidade de usarmos classes de entidades adicionais ou listas intermediárias.

Para ver como isso é feito, considere um bean gerenciado JSF que faz uma conexão com o banco de dados e obtém os registros de uma tabela chamada contatos:

Código para Agenda.java:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

package arquivo;

import java.sql.*;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.sql.rowset.CachedRowSet;

@ManagedBean
@SessionScoped
public class Agenda {
    public Agenda() {
    }

    // método que permite obter a lista de contatos
    public ResultSet getListaContatos() {
        // lista que guardará os contatos
        CachedRowSet crs = null;

        // obtém a conexão com o banco de dados
        Connection conn = Conexao.getConexao();

        try {
            Statement stmt = conn.createStatement();
            String query = "SELECT * FROM contatos ORDER BY nome";
            ResultSet rs = stmt.executeQuery(query);

            crs = new com.sun.rowset.CachedRowSetImpl();
            crs.populate(rs);
        } catch (SQLException ex){
            // talvez um log aqui
        }

        return crs;
    }
}

Veja que, embora a assinatura do método getListaContatos() mostre que o retorno é um objeto da interface java.sql.ResultSet, no corpo do método nós estamos retornando um objeto da classe com.sun.rowset.CachedRowSetImpl, uma implementação concreta da interface javax.sql.rowset.CachedRowSet. Isso é feito porque, para retornarmos apenas um ResultSet, a conexão com o banco de dados deveria permanecer aberta, ao passo que uma implementação da interface javax.sql.rowset.CachedRowSet é um conjunto de dados "desconectado".

Veja agora o código para a página JSP ou Facelets que contém o controle <h:dataTable> que exibirá os registros da tabela do banco de dados:

Código para index.xhtml:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html">
    <h:head>
        <title>Estudos JavaServer Faces</title>
    </h:head>
    <h:body>
       <h:form>
          <h:dataTable border="1" value="#{agenda.listaContatos}" 
             var="contato">
             <h:column>#{contato.id}</h:column>
             <h:column>#{contato.nome}</h:column>
             <h:column>#{contato.telefone}</h:column>
             <h:column>#{contato.email}</h:column>
          </h:dataTable>
       </h:form>
    </h:body>
</html>

A classe Agenda obtém a conexão com a base de dados por meio da linha:

// obtém a conexão com o banco de dados
Connection conn = Conexao.getConexao();

Em outras dicas desta seção eu mostro como esta classe de conexão pode ser escrita.

Link para compartilhar na Internet ou com seus amigos:

Vamos testar seus conhecimentos em Engenharia Civil - Construção Civil

Fases de uma obra

Em relação aos conceitos envolvidos na elaboração de um orçamento de obras, assinale a alternativa correta.

A) Custos diretos são aqueles em que é necessário estipular um fator de rateio para que sejam apropriados aos serviços.

B) Devem ser incluídas no título "desmobilização" de um orçamento as despesas com locação, fechamento, tapumes, demolições e relocações.

C) A administração do canteiro de obras e as despesas decorrentes da administração da empresa fazem parte dos custos diretos de uma obra.

D) Como regra, orçam-se os preços na construção civil por serviço, determinando-os segundo a produção de composições unitárias.

E) Em um solo, caso seja necessário escavar 1 m3 do terreno, deve-se orçar, no item referente à escavação do material, o valor 1,4 m3.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Fenômeno de Transportes e Hidráulica

Fórmula de Manning

Galerias subterrâneas de águas pluviais escoam todo o volume de chuvas que os bueiros conseguem drenar. São importantes para a drenagem de grandes centro. Isso porque, servem para evitar alagamentos e outros prejuízos sociais, ambientais e econômicos.

Para uma galeria de águas pluviais construída em concreto, com n igual 0,013, diâmetro de 85cm, declividade de fundo (S0) de 30cm/km, transportando 550l/s em regime permanente e uniforme, determine:

Qual altura da lâmina d'água pluvial que a galeria apresentará nessas condições?

A) 80cm.

B) 53cm.

C) 60cm.

D) 45cm.

E) 69cm.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Fenômeno de Transportes e Hidráulica

Equação de Bernoulli

Considere o tubo de fluxo abaixo contendo óleo, que flui de forma a podermos considera-lo um fluido ideal. Ele flui por um tubo que sobe de nível e se estreita. Dois manômetros marcam a pressão em dois pontos do tubo, como mostra a figura. Qual o valor da pressão indicada no segundo manômetro? (Dados: ρóleo = 900 kg / m3 e g = 9,8 m/s2)



A) 290 kPa

B) 109 kPa

C) 114 kPa

D) 286 kPa

E) 90,7 kPa
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Hidrologia

(CEBRASPE - 2019 - Analista de Gestão de Resíduos Sólidos SLU DF) Julgue o item, acerca de aspectos relacionados aos componentes do ciclo hidrológico.

A interceptação vegetal de parte da precipitação tende a reduzir a vazão ao longo do ano e a retardar e reduzir o pico de cheias.

A) Verdadeiro
B) Falso
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Ética e Legislação Profissional

Noções de licitação pública

A prefeitura de um município do interior do Estado de Santa Catarina precisa realizar uma licitação para a aquisição de bens de informática considerados comuns, como impressoras, cartuchos, laptops, estabilizadores, etc. A modalidade de licitação mais indicada é:

A) convite.

B) leilão.

C) concurso.

D) pregão.

E) concorrência.
Verificar Resposta Estudar Cards Todas as Questões

Veja mais Dicas e truques de JSF - Java Server Faces

Dicas e truques de outras linguagens

Códigos Fonte

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresSoftware de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento
Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidadesControle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades
Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: Delphi
6º lugar: C
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2024 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 13 usuários muito felizes estudando em nosso site.