Ir ao conteúdo

Mostrar dados ao inserir no banco de dados


Ir à solução Resolvido por Davi Nascimento_770787,

Posts recomendados

Postado

Bom dia galera,

 

quero que ao clicar em um botão "gravar dados", os dados sejam inseridos em um banco de dados e que ao mesmo tempo seja mostrado em uma relação abaixo do botão clicado.

 

Acontece que eu estou conseguindo enviar os dados para o banco, entro no banco mando visualizar e os dados digitados estão lá, no entanto, não estou sabendo como faço para mostrar os dados digitados.

 

Estou tentando usar um campo JTextArea para visualizar os dados, mas nada. Alguém pode me dar uma dica?

  • Membro VIP
Postado

Boa noite. Preciso saber em que 'pé' você está. Não vejo códigos, não vejo o banco, nem nada.


Seu problema é só no textarea? Outros componentes recebem dados do BD corretamente? Teste um label por exemplo.

 

labelnome.setText(String.valueOf(variável...));

Postado

Foi mal não ter postado os códigos antes, segue abaixo:

 

package atividademoduloix;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class Execucao extends JFrame implements ActionListener {

    JTextField jMatricula = new JTextField();
    JTextField jNome = new JTextField();
    JTextField jCurso = new JTextField();
    JButton jb1 = new JButton();
    JTextArea jRelatorio = new JTextArea();

    public Execucao() {
        this.setLocation(250, 50);
        this.setSize(600, 800);
        this.setLayout(null);
        this.setTitle("Inserindo Dados no Banco");
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);

        //Caixas de Texto
        jMatricula.setLocation(80, 20);
        jMatricula.setSize(150, 20);
        jNome.setLocation(80, 50);
        jNome.setSize(150, 20);
        jCurso.setLocation(80, 80);
        jCurso.setSize(150, 20);

        //Etiquetas
        JLabel jlb1 = new JLabel("Matrícula: ");
        jlb1.setLocation(10, 20);
        jlb1.setSize(100, 20);

        JLabel jlb2 = new JLabel("Nome: ");
        jlb2.setLocation(10, 50);
        jlb2.setSize(100, 20);

        JLabel jlb3 = new JLabel("Curso: ");
        jlb3.setLocation(10, 80);
        jlb3.setSize(100, 20);

        //Botão
        jb1.setLocation(330, 40);
        jb1.setSize(150, 30);
        jb1.setText("Grava Dados");
        jb1.addActionListener(this);

        //Área de visualização
        jRelatorio.setVisible(false);
        jRelatorio.setLocation(100, 120);
        jRelatorio.setSize(400, 500);

        this.add(jMatricula);
        this.add(jNome);
        this.add(jCurso);
        this.add(jlb1);
        this.add(jlb2);
        this.add(jlb3);
        this.add(jb1);
        this.add(jRelatorio);
    }

    @override
    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == jb1) {
            try {
                //Conexão ao servidor de Banco de Dados
                Class.forName("org.gjt.mm.mysql.Driver");

                //Cria conexão ao banco schema "aula"   
                Connection cn = DriverManager.getConnection("jdbc:mysql://localhost:3306/aula", "root", "");

                //Consulta o banco de dados    
                Statement st = cn.createStatement();

                PreparedStatement pst;
                String matricula = "INSERT INTO aula.alunos (matricula, nome, curso) VALUES (?,?,?)";
                pst = cn.prepareStatement(matricula);
                pst.setString(1, jMatricula.getText());
                pst.setString(2, jNome.getText());
                pst.setString(3, jCurso.getText());
                pst.executeUpdate();
                jMatricula.setText(null);
                jNome.setText(null);
                jCurso.setText(null);

                ResultSet rs = st.executeQuery("select * from alunos");

                while (rs.next()) {
                    jRelatorio.setText(jRelatorio.getText() + "Matrícula: " + rs.getString(1) + "Nome: "
                            + rs.getString(2) + "Curso: " + rs.getString(3) + "/n/n");
                    jRelatorio.setVisible(true);
                }
                cn.close();
                st.close();

            } catch (ClassNotFoundException f) {
                JOptionPane.showMessageDialog(null, "Erro ao conectar: " + f.getMessage());
            } catch (SQLException f) {
                JOptionPane.showMessageDialog(null, "Erro de SQL: " + f.getMessage());
            }
        }
    }

    public static void main(String[] args) throws SQLException {
        new Execucao().setVisible(true);

    }
}

 

Eu queria que fosse exibido igual abaixo, mas não estou conseguindo:

 

MATRÍCULA       NOME             CURSO

===============================

1                         Pedro              Info

2                         José                Alemão

Postado

O problema seria com a formatação do texto na tela?

 

Ve se é isso: http://examples.javacodegeeks.com/core-java/lang/string/java-string-format-example/

 

Testei rapidinho desse jeito:

 

String coluna = "%-12s%-12s%-12s";
System.out.println(coluna.format(coluna, "MATRICULA", "NOME", "CURSO"));
System.out.println("==============================================");
System.out.println(coluna.format(coluna, "1", "PEDRO", "Info"));
  • Solução
Postado

O problema é que tenho que buscar esses dados dentro do banco de dados,

por isso não estou conseguindo como fazer com que ao clicar no botão gravar dados,

os dados sejam inseridos no banco de dados e visualizados na JTextArea

 

Até que consigo enviar para o banco e ele ficam armazenados, mas não são mostrados


Eu fiz as alterações abaixo e agora estou visualizando os dados ao clicar no botão, no entanto, ainda não está certo, pois ele vai duplicando o que já está inserido no banco de dados.

 

               String matricula = "INSERT INTO aula.alunos (matricula, nome, curso) VALUES (?,?,?)";
                pst = cn.prepareStatement(matricula);
                pst.setString(1, jMatricula.getText());
                pst.setString(2, jNome.getText());
                pst.setString(3, jCurso.getText());
                pst.executeUpdate();
                jMatricula.setText(null);
                jNome.setText(null);
                jCurso.setText(null);
                ResultSet rs = st.executeQuery("select * from alunos");
                while (rs.next()) {
                    jRelatorio.setText(jRelatorio.getText()
                            + rs.getString(1)+"                        "
                            + rs.getString(2)+"                     "
                            + rs.getString(3) + "\n");
                    jRelatorio.setVisible(true);
                }
 

Postado

Copiei, colei teu código e funcionou normal, apertei no botão Grava Dados e logo em seguida mostrou os registros na tela.

Tive que modificar para usar Postgres como SGDB... Apenas isso.

Postado

Estanho quando executo aqui, aparece assim:

 

MATRÍCULA:        NOME:              CURSO:              
==================================================
1                        Brasil                     Info
1                        Brasil                     Info
2                        Pedro                     Java
1                        Brasil                     Info
2                        Pedro                     Java
3                        José                     PHP

Postado

Não tina visto post anterior... Mas precisa contar melhor qual é a necessidade do teu programa.

Não pode inserir mesmo registro?

Precisaria validar antes de inserir ou definir chave primária na tabela pra emitir uma exceção no ato da inserção.

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...