1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Pegar dados JTable para gerar PDF

Boa tarde a todos!

Por favor, alguém poderia me ajudar?

Possuo uma classe chamada relacaoPDF com o código abaixo que é utilizada para gerar um arquivo PDF com todos os dados do meu Banco de Dados.

try (
      ResultSet rs = st.executeQuery("select codFilme as CÓDIGO, nomeFilme as FILME, artistaFilme as ARTISTAS from filmes ORDER BY nomeFilme ASC;")) {
      while (rs.next()) {
            table.setWidthPercentage(100);
            table.addCell(new PdfPCell(new Paragraph(rs.getString("CÓDIGO"), fonte))).setHorizontalAlignment(Element.ALIGN_CENTER);
            table.addCell(new PdfPCell(new Paragraph(rs.getString("FILME"), fonte))).setHorizontalAlignment(Element.ALIGN_JUSTIFIED);
           table.addCell(new PdfPCell(new Paragraph(rs.getString("ARTISTAS"), fonte))).setHorizontalAlignment(Element.ALIGN_JUSTIFIED);
       }// fim while
}//fim 2° try

Esses mesmos dados do Banco de Dados aparecem em uma JTable ao abrir meu programa.

Só que agora, eu quero trocar esse comando SQL que pega todos os dados do BD por um comando que pegue todos os dados que estão na minha JTable.

Quero fazer essa troca, pois em algumas situações eu consigo pesquisar alguns filmes em um JTextField e essa mesma tabela é "editada/alterada" e passa a ter apenas os dados da pesquisa e não mais todos os dados do BD como inicialmente.

Então gostaria da ajuda de vocês quanto a isso.

Qual comando eu devo usar para poder substituir esse SELECT pelos dados da JTable?

[EDITADO para testes]

Estou tentando trocar o bloco acima por

public void mostrarRelacao(PdfPTable table, JTable tbFilmes) throws ClassNotFoundException {
        int tamanho = tbFilmes.getModel().getRowCount();
        Font fonte = new Font(Font.FontFamily.TIMES_ROMAN, 12, Font.BOLD, new BaseColor(0, 0, 0));
        for (int i=0; i <= tamanho; i++){
            table.setWidthPercentage(100);
            table.addCell(new PdfPCell(new Paragraph(tbFilmes.getModel().getValueAt(i, 0).toString(), fonte))).setHorizontalAlignment(Element.ALIGN_CENTER);
            table.addCell(new PdfPCell(new Paragraph(tbFilmes.getModel().getValueAt(i, 1).toString(), fonte))).setHorizontalAlignment(Element.ALIGN_JUSTIFIED);
            table.addCell(new PdfPCell(new Paragraph(tbFilmes.getModel().getValueAt(i, 2).toString(), fonte))).setHorizontalAlignment(Element.ALIGN_JUSTIFIED);
        }
}

Mas fica me retornando este código de erro:

Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 2 >= 2

Não sei o que possa ser.

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags java ou faça a sua própria pergunta.