Erro ao exibir campos em uma tabela [código formatado]

1 resposta
Vinifilpo

Oi!!
Estou criando uma janela que trás todos os registros do banco de dados em uma Jtabel.
No banco tenho uma tabela chamada clientes com os seguintes campos:

Id(chave primaria) , nome , endereco, telefone, cep , cidade, numero, estado, email, celular e fotos.

porem quando compilo o programa e abro a janela de relatorios ele me trás o cabeçalho certinho, porém não me tras dos dados da coluna ID. Na coluna de titulo ID, vem os nomes, de endereco vem os numeros e assim por diante.
Creio que seja um errinho simples de lógica, porém não consegui achá-lo.
aguardo uma ajuda, enquanto isso vou tentando solucionar esse problema.
Obrigado!!

Usei o seguinte codigo na classe Relatorio:

package relatorio;

/**
 *
 * @author Vinícius
 */
import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import javax.swing.*;
import java.util.*;



    /* This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */

    // <editor-fold defaultstate="collapsed" desc="Generated Code">
public class Relatorio extends JFrame{
private Connection con;
private JTable tabela;

public Relatorio(){
super("Agenda - Nomes" );
String url = "jdbc:odbc:clientes";
String usuario = "";
String senha = "";
try{
Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" );
con = DriverManager.getConnection(url, usuario, senha);
}
catch (Exception e){
JOptionPane.showMessageDialog(null,"Conexão não estabelecida","Mensagem do Programa", JOptionPane.ERROR_MESSAGE);
}
buscaTabela();
setSize(800,400);
setVisible(true);
}
public static void main(String args[]){
Relatorio app = new Relatorio();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private void buscaTabela(){
Statement st;
ResultSet res;
try{
Vector cabecalho = new Vector();
Vector linhas = new Vector();
st = con.createStatement();
res = st.executeQuery("SELECT * FROM clientes ORDER BY Nome");
res.next();
ResultSetMetaData rsmd = res.getMetaData();
for (int i = 1; i <= rsmd.getColumnCount(); ++i)
cabecalho.addElement(rsmd.getColumnName(i));
do{
linhas.addElement(proximaLinha(res,rsmd));
}
while (res.next());
tabela = new JTable(linhas,cabecalho);
JScrollPane scroller = new JScrollPane( tabela );
getContentPane().add(scroller, BorderLayout.CENTER);
validate();
st.close();
}
catch (SQLException sqlex){
}
}
private Vector proximaLinha(ResultSet rs, ResultSetMetaData rsmd){
Vector LinhaAtual = new Vector();
try{
for (int i = 1; i <= rsmd.getColumnCount(); ++i)
switch(rsmd.getColumnType(i)){
case Types.VARCHAR: LinhaAtual.addElement(rs.getString(i));
break;
case Types.TIMESTAMP: LinhaAtual.addElement(rs.getDate(i));

break;
case Types.NUMERIC: LinhaAtual.addElement(new Long(rs.getLong(i)));
break;
}
}
catch(SQLException e){
}
return LinhaAtual;
}
}

1 Resposta

Ziguifrid

Eu não sei onde você está errando, mas eu faria assim:

import com.mysql.jdbc.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author Michel A. Medeiros
 */
public class Tabela_Relatorio extends javax.swing.JFrame {
 Connection con = null;
 List<Cliente> relatorio = new ArrayList<Cliente> ();
    /** Creates new form Tabela_Relatorio */
    public Tabela_Relatorio() {
        initComponents();

    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:
        
           try{

con =       (Connection) Conexao.conectar();
 tabela_relatorio.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);

String sql = "select * from cliente ORDER BY Nome";
PreparedStatement ps = con.prepareStatement(sql);
ResultSet res = ps.executeQuery();
//ps.close();

while(res.next()){
        int ID = res.getInt("Id");
        String nome = res.getString("nome");
        String endereco = res.getString("endereco");
        String numero = res.getString("numero");
        String cep = res.getString("cep");
        String cidade = res.getString("cidade");
        String estado = res.getString("estado");
        String telefone = res.getString("telefone");
        String email = res.getString("email");
        String celular = res.getString("celular");
        String foto = res.getString("foto");


        Cliente c = new Cliente();
        c.setId(ID);
        c.setNome(nome);
        c.setEndereco(endereco);
        c.setNumero(numero);
        c.setCep(cep);
        c.setCidade(cidade);
        c.setEstado(estado);
        c.setTelefone(telefone);
        c.setEmail(email);
        c.setCelular(celular);
        c.setFoto(foto);

        relatorio.add(c);
}

 DefaultTableModel modelo = (DefaultTableModel) tabela_relatorio.getModel();
        modelo.setRowCount(0);
            if (relatorio.isEmpty()) {
                JOptionPane.showMessageDialog(null, "Não existe nenhum cliente registrado.");
            }
            else
            {
            for (Cliente c : relatorio) {
            modelo.addRow(new Object[]{c.getId(), c.getNome(), c.getEndereco(), c.getNumero(),
            c.getCep(), c.getCidade(), c.getEstado(), c.getTelefone(), c.getEmail(), c.getCelular(),
            c.getFoto()});
            }

            tabela_relatorio.setModel(modelo);

            }

     }
     catch (Exception e){
         System.out.println(e.getMessage());
     }

        
    }
Criado 1 de agosto de 2010
Ultima resposta 1 de ago. de 2010
Respostas 1
Participantes 2