Como colocar os dados de uma Jtable de uma app java em uma tabela no banco de dados?

6 respostas
samea

Eu tenho uma app que faz a consuta no banco de dados e imrpimi os registros dentro de um jtable,
o que estou tentando fazer é colocar esses registros da jtable dentro de uma
tabela no banco de dados que foi criada para receber esses dados, para isso
criei tres classes e fiz as ligacões mas naum esta dando certo
essas são as classes:

package spc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.List;

public class EnviaBanco {
	private String drive, url, usarname, password;
	private Connection con;

	public static List listacliente;

	public EnviaBanco(){
		try{
			DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
            String url = "endereco do banco";
            this.con = DriverManager.getConnection (url, "usuario", "senha");
            Statement st = con.createStatement();

            System.out.println("Conectado");

        	  for(int i =0; i<listacliente.size();i++){
        		  Pessoa p = (Pessoa) listacliente.get(i);
        		  String query = "insert into SAMEA_SPC(spc_nome_cliente,spc_endereco_cliente, spc_cpf, spc_cgc, spc_bairro, spc_cep, spc_telefone, spc_valor_debito, spc_cod_programa, spc_num_ligacao)" + "values ("+ PrincipalSamea_spc.model.getColumnName(0)+","+ PrincipalSamea_spc.model.getColumnName(1)+","+PrincipalSamea_spc.model.getColumnName(2)+","+PrincipalSamea_spc.model.getColumnName(3)+","+PrincipalSamea_spc.model.getColumnName(4)+","+PrincipalSamea_spc.model.getColumnName(5)+","+PrincipalSamea_spc.model.getColumnName(6)+")";
        	  }
		}catch(SQLException e1){
            System.out.println("Erro ao conectar ao banco");
            e1.printStackTrace();

			}finally{ // Finalizando a conexão
            System.out.println("Encerrando a conexão");

	}
	}


}
package spc;
import javax.swing.table.DefaultTableModel;

public class Samea_spc{
	 private String cliente_nome, cliente_endereco,	 cliente_cpf, cliente_cgc, cliente_bairro, cliente_cep, cliente_telefone, cliente_id, cliente_valorDebito, cliente_codigoPrograma, cliente_numeroLigacao;
	 public Object getCpf;


	public Samea_spc () {}


    public void setNome_cliente (String cliente_nome) {
        this.cliente_nome = cliente_nome;
    }

    public void setCliente_endereco (String cliente_endereco) {
       this.cliente_endereco = cliente_endereco;
    }


   public void setCliente_cpf(String cliente_cpf) {
        this.cliente_cpf = cliente_cpf;
   }

   public void setCliente_cgc(String cliente_cgc) {
       this.cliente_cgc = cliente_cgc;
  }

   public void setCliente_bairro(String cliente_bairro) {
       this.cliente_bairro = cliente_bairro;
  }

   public void setCliente_cep(String cliente_cep) {
       this.cliente_cep = cliente_cep;
  }


   public void setCliente_telefone (String cliente_telefone) {
       this.cliente_telefone = cliente_telefone;
 }

   public void setCliente_id(String cliente_id) {
	      this.cliente_id = cliente_id;
	 }

   public void setCliente_valorDebito(String cliente_valorDebito) {
	      this.cliente_valorDebito = cliente_valorDebito;
	 }

	  public void setCliente_codigoPrograma (String cliente_codigoPrograma) {
	      this.cliente_codigoPrograma = cliente_codigoPrograma;
	}
	  public void setCliente_numeroLigacao (String cliente_numeroLigacao) {
	      this.cliente_numeroLigacao = cliente_numeroLigacao;
	}


  public String getCliente_nome() {
        return cliente_nome;
  }

   public String getCliente_endereco () {
       return cliente_endereco;

  }

   public String getCliente_cpf() {
       return cliente_cpf;
 }

  public String getCliente_cgc() {
     return cliente_cgc;
  }

  public String getCliente_bairro() {
	     return cliente_bairro;
	  }

   public String getCliente_cep() {
        return cliente_cep;
  }

   public String getCliente_telefone () {
       return cliente_telefone;

  }

   public String getCliente_id() {
       return cliente_id;
 }


  public String getCliente_valorDebito() {
        return cliente_valorDebito;
  }

   public String getCliente_codigoPrograma () {
       return cliente_codigoPrograma;

  }

   public String getCliente_numeroLigacao() {
       return cliente_numeroLigacao;
 }



}
package spc;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;

import java.awt.Adjustable;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;

public class PrincipalSamea_spc extends JFrame implements ActionListener
{
    public static JLabel L1,  L2;
    private JLabel L3,  L4,  L5;
    private JTextField Txt1,  Txt2;
    public static JTextField Txt4,  Txt3;
    public static JTextArea TxtArquivo;
    private JFileChooser Arquivo;
    private JButton CmdConsultar,  CmdGerar,  CmdSair,  CmdC, CmdEnvia;
    public static JTable table;
    public static DefaultTableModel model;
    private JScrollPane js;
    public static GridLayout grade;

    private void setCenter(JFrame frame)
    {
        Dimension paneSize = frame.getSize();
        Dimension screenSize = frame.getToolkit().getScreenSize();
        frame.setLocation((screenSize.width - paneSize.width) / 2, (screenSize.height - paneSize.height) / 2);
    }

    public PrincipalSamea_spc()
    {
    	try{
            UIManager.setLookAndFeel("com.birosoft.liquid.LiquidLookAndFeel");
            SwingUtilities.updateComponentTreeUI(this);
           }catch(Exception erro) {
              JOptionPane.showMessageDialog(null,erro);
           }


        setSize(768, 570);
        setResizable(false);
        setTitle("Envio de dados");
        setCenter(this);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Container cp = getContentPane();
        cp.setLayout(null);
       // ((JComponent) cp).setBorder(new FundoSistema());

        model = new DefaultTableModel();
        model.addTableModelListener(table);
        model.addColumn("Nome do cliente");
        model.addColumn("Endereço do cliente");
        model.addColumn("CPF");
        model.addColumn("CGC");
        model.addColumn("Bairro");
        model.addColumn("CEP");
        model.addColumn("Telefone");
        model.addColumn("Data do vencimento");
        model.addColumn("Data da compra");
        model.addColumn("Valor do Debito");
        model.addColumn("Codigo do programa");
        model.addColumn("Numero da ligação");


        L5 = new JLabel(" Dados dos Clientes");
        L5.setFont(new Font("Dialog", Font.BOLD, 12));//definidndo a fonte
        js = new JScrollPane(L5);
        js.setBounds(30, 60, 115, 21);
        js.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
        cp.add(js);

        table = new JTable();
        table.setModel(model);
        table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
        table.setAutoscrolls(true);

        int rows = 3;
        int cols = 3;
        JTable tabela = new JTable (rows, cols);

        // Desativar auto redimensionamento
        table.setAutoResizeMode (JTable.AUTO_RESIZE_OFF);

        // Setando a largura das colunas

        int vColIndex = 0;//nome do cliente
        TableColumn col = table.getColumnModel (). getColumn (vColIndex);
        col.setPreferredWidth (250);

        int vColIndex1 = 1;//endereco
        TableColumn col1 = table.getColumnModel (). getColumn (vColIndex1);
        col1.setPreferredWidth (300);

        int vColIndex2 = 2;//cpf
        TableColumn col2 = table.getColumnModel (). getColumn (vColIndex2);
        col2.setPreferredWidth (80);

        int vColIndex3 = 3;//cgc
        TableColumn col3 = table.getColumnModel (). getColumn (vColIndex3);
        col3.setPreferredWidth (100);

        int vColIndex4 = 4;//coluna de nome do bairro
        TableColumn col4 = table.getColumnModel (). getColumn (vColIndex4);
        col4.setPreferredWidth (200);

        int vColIndex5 = 5;//cep
        TableColumn col5 = table.getColumnModel (). getColumn (vColIndex5);
        col5.setPreferredWidth (70);

        int vColIndex6 = 6;//telefone
        TableColumn col6 = table.getColumnModel (). getColumn (vColIndex6);
        col6.setPreferredWidth (70);



        js = new JScrollPane(table); //tabela
        js.setBounds(30, 80, 700, 400);
        cp.add(js);
        Arquivo = new JFileChooser(".");

        L1 = new JLabel(" NSA");
        L1.setFont(new Font("Dialog", Font.BOLD, 12));//defindo a fonte
        js = new JScrollPane(L1);
        js.setBounds(30, 20, 33, 25);
        js.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
        cp.add(js);

        Txt2 = new JTextField();//referente ao NSA
        Txt2.addActionListener(this);
        js = new JScrollPane(Txt2);
        js.setBounds(70, 20, 150, 25);
        js.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
        cp.add(js);

        L2 = new JLabel(" Caminho dos dados");
        L2.setFont(new Font("Dialog", Font.BOLD, 12));//defindo a fonte
        js = new JScrollPane(L2);
        js.setBounds(230, 20, 120, 25);
        js.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
        cp.add(js);

        Txt1 = new JTextField();//referente ao caminho de dados esse eh o textField que recebe o valor do fileChooser
        js = new JScrollPane(Txt1);
        Txt1.addActionListener(this);
        js.setBounds(355, 20, 250, 25);
        js.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
        js.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); // AQUI! Acrescentei essa linha para controlar o comportamento da barra horizontal de rolagem
        cp.add(js);

        CmdC = new JButton("...");
        CmdC.setBounds(610, 20, 25, 25);
        CmdC.addActionListener(this);
        cp.add(CmdC);

        CmdConsultar = new JButton("Consultar");
        CmdConsultar.setBounds(640, 20, 90, 25);
        CmdConsultar.addActionListener(this);
        cp.add(CmdConsultar);

        CmdEnvia = new JButton("SPC");
        CmdEnvia.setBounds(510, 500, 60, 25);
        CmdEnvia.addActionListener(this);
        cp.add(CmdEnvia);

        CmdGerar = new JButton("Gerar");
        CmdGerar.setBounds(580, 500, 70, 25);
        CmdGerar.addActionListener(this);
        cp.add(CmdGerar);

        L3 = new JLabel(" Total de Clientes");
        L3.setFont(new Font("Dialog", Font.BOLD, 12));//defindo a fonte
        js = new JScrollPane(L3);
        js.setBounds(30, 500, 105, 25);
        js.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
        cp.add(js);

        //para receber o resultado da soma de numero de clientes
        Txt3 = new JTextField();
        js = new JScrollPane(Txt3);
        js.setBounds(140, 500, 100, 25);
        js.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
        cp.add(js);

        L4 = new JLabel(" Total de Debitos");
        L4.setFont(new Font("Dialog", Font.BOLD, 12));//defindo a fonte
        js = new JScrollPane(L4);
        js.setBounds(290, 500, 100, 25);
        js.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
        cp.add(js);

        //para receber o valor total de debitos dos clientes
        Txt4 = new JTextField();
        js = new JScrollPane(Txt4);
        js.setBounds(400, 500, 100, 25);
        js.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
        cp.add(js);

        CmdSair = new JButton("Sair");
        CmdSair.setBounds(660, 500, 70, 25);
        CmdSair.addActionListener(this);
        cp.add(CmdSair);

        TxtArquivo = new JTextArea();//recebe os valores que seram impressos no txt
        TxtArquivo.setVisible(false);
        js = new JScrollPane(TxtArquivo);
        js.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
        cp.add(js);


    }

    public void actionPerformed(ActionEvent e)
    {
    	if (e.getSource() == CmdEnvia) {
    		CmdEnvia = PrincipalPessoa.main(null);

        }

        if (e.getSource() == CmdConsultar) {
            CmdConsultar = InverteNovoRecebeBanco.main(null);
        }

        if (e.getSource() == CmdC) {
            JFileChooser chooser = new JFileChooser();
            chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
            chooser.setLocation(0, 0);

            // Esta linha alinha o JFileChooser no centro
            int returnVal = chooser.showSaveDialog(this);
            // INICIO - ALTERACAO
            if (returnVal == JFileChooser.APPROVE_OPTION) {
                Txt1.setText(chooser.getSelectedFile().getAbsolutePath());


            }
        // FIM - ALTERACAO
        }
        if (e.getSource() == CmdGerar) {
            // INICIO - ALTERACAO
            if (Txt1.getText().trim().equals("")) {
                JOptionPane.showMessageDialog(null, "Digite o local onde voce quer salvar o arquivo");
                return;
            }
            if (Txt2.getText().trim().equals("")) {
                JOptionPane.showMessageDialog(null, "Digite um nome para gerar o arquivo");
                return;
            } else {
            	String arq = Txt1.getText();
                if (!arq.endsWith(File.separator)) {
                    arq += File.separator;
                }
                arq += Txt2.getText();
                try {
                    salvar(arq, TxtArquivo.getText());
                    JOptionPane.showMessageDialog(null, "Arquivo salvo com sucesso!");
                } catch (IOException ioe) {
                    JOptionPane.showMessageDialog(null, "Não foi possível salvar arquivo!");
                }
            //  }
            // FIM - ALTERACAO
            }
        }
        if (e.getSource() == CmdSair) {
            this.dispose();
        }
    }

    public void salvar(String nomeArq, String conteudoArq) throws IOException
    {
        // INICIO - ALTERACAO
        PrintWriter out = new PrintWriter(new FileWriter(nomeArq));
        out.print(conteudoArq);
        out.close();
        // FIM - ALTERACAO
    }


    public static void main(String args[])
    {
    	PrincipalSamea_spc app = new PrincipalSamea_spc();
        app.show();
    }
}

A primeira classe é a classe que tem o insert para inserir os dados na tabela do banco de dados, a segunda classe é de get's e set's, e a terceira classe é a classe que eu executo a app, eu sei que esta muito grande o meu codigo mas isso eu arrumo depois alguem pode me dizer o que estou fazendo de errado?

Por favor me ajudem! :oops:

6 Respostas

finotti

não vi onde você está instanciando sua classe “EnviaBanco”.
o método salvar está gravando os dados num arquivo texto.
no método salvar vc deve utilizar a classe responsável por gravar no banco.

F

vc ja verificou se sua classe que envia os dados para a JTable está armazenando os dados do banco corretamente?

samea

Não sei se esta armazendo corretamente, não estou podendo executar o codigo por que esta rodando outra coisa na minha maquina e se eu rodar vai dar erro.

F

localiza o erro adicionando break points em seu codigo…pq só com o código ai ficar difícil de achar onde esteja o possível erro!!!

F

O que eu sugiro eh vc criar e executar o código aos poucos ou seja, criar uma classe de conexão com o banco…nesta mesma classe vc pode armazenar todos os dados resultantes do select dado no banco…roda a plicação e ve se os dados estão corretos e se não existe nenhum erro até então…depois cria uma classe recebe informações, onde vc vai passar como parâmetros os dados da classe de conexão com o banco…e por fim manda imprimi-los na tabela …acho que esta eh a forma mais simples de dispor informações do banco em um frame com tabela!

F

Samea…dando uma olhada por cima em seu código vi que tem uma coisa estranha…na query…qd vc manda dar o insert…vc tem que abrir as aspas e passar o parâmetro que deve ser inserido no banco…neste caso a variavel que vai receber o valor referente aquele campo da tabela!

Criado 10 de março de 2009
Ultima resposta 10 de mar. de 2009
Respostas 6
Participantes 3