Mostrar resultado de select com inner join em jTextArea

Olá. Tenho um select com inner join entre três tabelas e estou com dificuldade de mostrar o resultado da consulta sql em uma área de texto, pelo fato de que não tenho nenhum campo em um formulário para “pegar” a informação, a consulta é feita diretamente no banco e preciso mostrar o resultado na área de texto ao clicar em um botão. Como posso proceder? A consulta é o que segue abaixo:

try {
        String query ="SELECT LEITURA_ENTRADA.NRO_SALA, "
                + "LEITURA_ENTRADA.NOME_SALA,"
                + "LEITURA_ENTRADA.PACIENTE,"
                + "LEITURA_ENTRADA.HEXAD AS EQUIP_ENTRADA_LEI,"
                + "LEITURA_SAIDA.HEXAD AS EQUIP_SAIDA_LEI,"
                + "INSTRUMENTOS.NOME,"
                + "INSTRUMENTOS.DESCRICAO "
                + "FROM LEITURA_ENTRADA "
                + "INNER JOIN LEITURA_SAIDA ON LEITURA_ENTRADA.HEXAD = LEITURA_SAIDA.HEXAD "
                + "INNER JOIN INSTRUMENTOS ON LEITURA_ENTRADA.HEXAD = INSTRUMENTOS.HEXAD "
                + "INNER JOIN INSTRUMENTOS AS INSTRUMENTOS_SAIDA ON LEITURA_SAIDA.HEXAD = INSTRUMENTOS.HEXAD ";

Cara, desculpe a pergunta mas, qual exatamente é o problema?

  • Vc não possui algum código de comunicação com o banco de dados
  • Vc não esta utilizando o ResultSet ou PreparedStatement
  • O select esta errado
  • Vc n esta conseguindo recuperar estes dados pois gera algum erro

Qual das opções acima se encaixa sua questão?

Seguinte @4mega, tenho a comunicação com o banco funcionando corretamente. Usei resultset pra pegar cada resultado, da seguinte forma:

Class.forName("com.mysql.jdbc.Driver");
//Abrindo a conexão
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3307/tcc", "root", "usbw");
try {
    String query ="SELECT LEITURA_ENTRADA.NRO_SALA, "
            + "LEITURA_ENTRADA.NOME_SALA,"
            + "LEITURA_ENTRADA.PACIENTE,"
            + "LEITURA_ENTRADA.HEXAD AS EQUIP_ENTRADA_LEI,"
            + "LEITURA_SAIDA.HEXAD AS EQUIP_SAIDA_LEI,"
            + "INSTRUMENTOS.NOME,"
            + "INSTRUMENTOS.DESCRICAO "
            + "FROM LEITURA_ENTRADA "
            + "INNER JOIN LEITURA_SAIDA ON LEITURA_ENTRADA.HEXAD = LEITURA_SAIDA.HEXAD "
            + "INNER JOIN INSTRUMENTOS ON LEITURA_ENTRADA.HEXAD = INSTRUMENTOS.HEXAD "
            + "INNER JOIN INSTRUMENTOS AS INSTRUMENTOS_SAIDA ON LEITURA_SAIDA.HEXAD = INSTRUMENTOS.HEXAD ";

ResultSet rs = ...
while (rs.next()) {                

        String nro_sala = rs.getString("nro_sala");
        String nome_sala = rs.getString("nome_sala");
        String paciente = rs.getString("paciente");
        String equip_entrada_lei = rs.getString("hexad");
        String equip_saida_lei = rs.getString("hexad");
        String nome = rs.getString("nome");
        String descricao = rs.getString("descricao");
        ///para colocar dentro do jTextFiel
        
        jTextFiel1.append("nro_sala"+nro_sala+"nome_sala"+nome_sala+"paciente"+paciente+"hexad"+equip_entrada_lei+"hexad"+equip_saida_lei+"nome"+nome+"descricao"+descricao);
       }
       rs.close();
       System.out.println("O resultado da consulta é: "+rs);

Acredito que o meu select não esteja errado, pois não retorna erro no sql. Apliquei esse código a um botão, que quando clicado teria que aparecer dentro do textarea o resultado dessa consulta, o que me retorna é algo assim:

com.mysql.jdbc.JDBC4ResultSet@1a16869 

Pode ser que esteja errado algum método ou função, que não estou sabendo manipular…e é isso que eu teria que descobrir…

Blz, um problema que pude perceber é que vc mistura comunicação com o banco e interface(Eu tenho Toc quando o assunto e programação e ver isso dói muito :cry: ), mas vou ignorar isso por enquanto. O problema do seu System.out.println é que vc esta retornando o Objeto, por isso ele traz os símbolos e não o resultado real.

Vc deve criar uma classe do tipo respectivo do seu resultado, por exemplo, se vc quer os alunos de um select q vc fez, então vc Coloca os dados na classe Aluno, desta forma vc tem maior controle dos seus dados.

Trabalhe com classes e métodos separados, garanto que sua aplicação ficará bem melhor jovem padawan.

Segue anexo de uma aplicação que abandonei a muito tempo atras, nesta aplicação vc verá exemplos de uso de classes DAO, que são minhas classes de acesso a banco.
appAgenda2.rar (326.4 KB)
A app esta bem incompleta, porém tem um ou dois select’s que vão te ajudar.

Me desculpe então, você ter que ver essas “bagunças” nos meus códigos…iniciantes são assim, ainda mais quando se tem um prazo…pretendo melhorar nas lógicas quando começar a ter tempo de programar de verdade. Mas enfim, verifiquei no arquivo que vc disponibilizou, nas classes DAO, e eu tenho algumas que consegui desenvolver, mas para inserção e exclusão…nesta eu tô bem perdida mesmo, em como desenvolver.

Mande sua aplicação, talvez possa analisar com maior precisão o problema.
PS: Tava brincando (-_-’ )

Tem algumas coisas que depois tenho alterar, como por exemplo, o tipo de dado id, está como string enfim…agradeço muito se puder me ajudar nessa questão do select.
ProjetoTCC.zip (171.5 KB)

Vc tem quanto tempo para desenvolver seu sistema do TCC?

Já estou em cima do laço. Já devia estar pronto o desenvolvimento. Como não consegui desenvolver essa parte, voltei pra escrita… :sob:

Seguinte eu n tenho conexão com o banco de dados por isso estou “programando as escuras”. Fiz o seguinte supondo que a modificação fosse na interface verificacaoInstrumento.

Criei uma classe chamada DAOInstrumentos (Eu sei q tinha InstrumentosDAO…);
Esta classe é responsável por fazer dois selects que identifiquei na janela.
O select eu alterei o indicador do resultado para um Integer começando do 1, pois eu acho q este era o problema.
Coloquei também um System.out.print() no select, ele dirá se onde esta o problema caso ocorra;
Para chamar a classe é só um:

jTextArea1.setText(new DAOInstrumento().selectEtc());

Criei uma classe comunicação também, sei que tinha uma ali, mas tinha minhas duvidas se funcionava.

Eu sei que vc esta com pressa, mas o trabalho repetitivo das linhas que vc esta implementando, estão te atrasando ainda mais, acredite. Quanto menas linhas de código de um sistema, mais rápido o desenvolvimento do mesmo.

faça o teste e me de um Feedback do resultado.
ProjetoTCC.rar (159.1 KB)

Beleza…retornou certinho. Preciso dizer que a organização e separação das classes e interface ficou muito melhor…obrigada pela atenção e tempo que tirou pra me ajudar a resolver este problema…agora só preciso formatar os espaços que são mostrados na textArea. :slight_smile:

1 curtida