Metodo Java para printar tabela do BD - PostgreSQL

15 respostas
jdbcjava
L

Olá, estou com um problema. Eu tenho um modelo de banco de dados com 3 tabelas dinamicas, pois bem, preciso criar um metodo em java que ja esta com o inicio pré-estabelecido que print cada linha da tabela. Exemplo: Loja01;100;100;50;0;250 .
Metodo pré-estabelecido: public void printReport(Date initialDate, Date endDate) { List<Sale> sales = getSales(initialDate, endDate); ... }
Imagem de exemplo da tabela no BD.

Link do BD para melhor entendimento

15 Respostas

D

E? Qual a dúvida?

L

Então, eu não faço a menor ideia de como acessar os dados da tabela e retornar dessa forma que falei na pergunta. Pois tenho 3 tabelas, Sale, Store, Credit_Card, e e faça a junção das mesma com inner join. E uso uma função interna do postgreSql “jsonb_object_agg” para gerar as colunas com os nomes dos cartões.

D

1 - Estude SQL (especificamente DML), veja SELECTs, WHEREs, JOINs, etc.
2 - Estude JDBC

J

3 - Estuda sobre métodos de String java. Como por exemplo String.join: https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#join-java.lang.CharSequence-java.lang.CharSequence…-

L

Oi @darlan_machado, eu estudei, e estou estudando, mas nao consigo achar algo que indica como eu pego o valor da coluna pelo indice.Ele fica meio complexo porq uso esta função json para criar o modelo da tabela.Por exemplo, a coluna “Amex”, ela é um insert na tabela credit_card, e na tabela ela ‘virou’ uma coluna e esta relacionada com o tatal de vendas.É nisso que esto me perdendo, nao hora de imprimir no java, nao sei como fazer o for para ele percorrer todos os campos e ir imcrementando para alterar o indice.

J

Por que está usando função json? Para trazer naquele formato você pode trazer os dados normalmente e no Java usar String.join. Ou usar a função concat_ws do postgresql. De resto é lógica de programação.

SELECT
    concat_ws('; ', campo1, campo2, campo3) AS resultado 
FROM
    tabela;

https://www.postgresql.org/docs/9.1/static/functions-string.html

L

@javaflex, eu preciso tratar esses dados e deixar desse modo no proprio banco, é o que o exercico propoem.E eu usei a função json pq foi a unica que consegui, tentei usar a crosstab, mas tbm nao deu.É que nao sou experiente nessa area, sou iniciante, por isso estou com dificuldade exatamente na logica, nao sei como pegar o campo, do bd, ou melhor, nao sei ao certo qual quanto pegar.Minha logica é pegar o getNome de Store e os id de Sale e colocar dentro de um for. Nao sei se seria a maneira correta. Ou a melhor maneira.
Eu tenho um codigo mas ele imprime o nome da loja varias vezes e o nome do cartao.
segue: ` public void printReport (Date initialDate, Date endDate){

List<Sale> sales = getSales (initialDate, endDate);
        
        for (Sale s:sales){
            
            Store st = s.getStore(); // Recupera a Loja
            
            CreditCard cc = s.getCreditCard(); // Recupera o Cartão

            System.out.println(st.getNome() + ";" + cc.getName() + ";" + s.getValor());
        }
}`

Esse codigo imprime da seguinte forma:
Loja01; visa; 100;
Loja01;master; 200 …etc…
Essa tabela eu nao tinha colocado o json para montar as colunas com os nomes dos cartões.
Desde ja obrigado.

J

Voce leu sobre a funcao concat_ws do PostgreSql?

L

@javaflex sim, pelo que entendi a função é para concatenar as colunas, até ai tudo bem.É que no meu bd estou usanso inner join para junção de tabelas, eu relaciono cada coluna com os nomes dos cartões e os valores.
Vc acha que o uso do json nao é a melhor opçao?

J

Opcao se voce apresentasse a necessidade de retornar no formato json. Esse formato “Loja01; visa; 100;” nao é json.

L
<a class="mention" href="/u/javaflex">@javaflex</a>, sim  esse foi o exemplo que eu dei, pq esse foi o codigo que eu consegui fazer. Mas eu preciso printar assim :

Loja01; 100;200;300;400; 1000;

Loja02; 100;100;100;100;400;

Que é exatamente como a função executa no postgresql, porem eu nao sei chamar isso no java.
J

Se nao sabe fazer um SELECT no Java, melhor você parar para estudar JDBC.

L

Ok. Obrigado pela dica.
E obrigado pela atenção até aqui.

J

Segue conteudo:

https://www.caelum.com.br/apostila-java-web/bancos-de-dados-e-jdbc/

L

Muito obrigado novamente!!
Irei estudar mais!!

Criado 10 de fevereiro de 2018
Ultima resposta 13 de fev. de 2018
Respostas 15
Participantes 3