Como ler um bd e jogar num jTable - Alguem ja deve ter passado por isso

Muitas pessoas entraram em contato mais coisas muito complicadas…
Alguem ja deve ter feito isso de forma mais simples…

ja postei varias mensagens… e ndaa
se alguem puder ajudar;; agradeco

Se você já postou várias mensagens do mesmo assunto e ninguem respondeu, não vai ser agora que vão responder… heehhehehehe…

Cara, você sabe buscar dados de um BD (com JDBC) ??? Sabe manipular um JTable ??? Estude essas APIs e quebre um pouco a cabeça em como integrar tudo isso. Aqui no GUJ tem tutorial de JDBC e JTable.

Boa sorte.

Faça uma conexao com o banco de dados para que este te retorne um ResultSet.
Neste esquema:

DriverManager.registerDriver(new OracleDriver()); Connection conec = DriverManager.getConnection("jdbc:oracle:thin:@ipdoBanco:Porta:Servico",USUARIO, SENHA); Statement stmt = conec.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY); rs = stmt.executeQuery(Query);

Este he um esquema de conexao para o Banco ORACLE. Procure ai a conexao pra o banco q vc estiver usando!

Percorra este resultset e monte um TableModel!

Apos isso, incremente esse TableModel em sua Jtable.

[code] /**

  • Gera um modelo a partir de um ResultSet.
  • @param rs
  • @return Retorna um modelo de tabela contendo os dados de um ResulSet.
  • @throws java.lang.Exception
    *@Autor: Vitor Eduardo Patriarcha - Monolito Sistemas
    */
    public DefaultTableModel GeraModelo (ResultSet rs) throws Exception
    {
    DefaultTableModel modelo = null;
    try{
    ResultSetMetaData rsmd;
    rsmd = rs.getMetaData();
int num_col = 0;
int cont = 0;
num_col = rsmd.getColumnCount();
int num_lin;

rs.last();
num_lin = rs.getRow();
rs.beforeFirst();

String dados[][] = new String [num_lin][num_col];
String colunas[] = new String [num_col];

for (int i = 1;i <= num_col; i++)
{
  colunas[i - 1] = rsmd.getColumnLabel(i);
}

int a;   
while (rs.next())
{
  for (int x = 0; x < num_col; x++)
  {       
    a = rsmd.getColumnType(x + 1);
    if (a == 2)
    {
      dados[cont][x] = String.valueOf(rs.getString(x + 1));
    }else if (a == 91)
    {
      dados[cont][x] = String.valueOf(rs.getDate(x + 1));
    }else
    {
      dados[cont][x] = rs.getString(x + 1);
    }         
  } 
  cont ++;     
}
modelo = new DefaultTableModel(dados, colunas);

} catch(Exception e) {
JOptionPane.showMessageDialog( null,"Erro na Função GeraModelo - " + e.getMessage(), “Erro”, JOptionPane.INFORMATION_MESSAGE );
}

return modelo;

} [/code]

Este codigo prontinho te retorno o modelo printinho!
PAsse eu resultset pra ele que ele faze tudo
Ex.
Jtable1.setModel(GeraModelo(MeuResultSET));

Mais que isso he impossivel!

marciofermino, só para te dar mais opcoes no Deitel há abordagem de JDBC, entao é mostrado uma classe q tb retorna um tableModel pra tu setares no JTable. A classe é ResultSetTableModel e tem diversos métodos interessantes.
Falos.

desculpe mis oque é deitel?

import javax.swing.*;

import java.awt.*;
import javax.swing.JPanel;
import javax.swing.border.EtchedBorder;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.JTableHeader;

import sun.security.jca.GetInstance.Instance;

import java.awt.GridBagLayout;
import java.sql.*;
import java.util.Vector;
import javax.swing.JButton;
import java.awt.Rectangle;
import javax.swing.JTextField;
import javax.swing.JTable;

@SuppressWarnings(“serial”)
public class Tela1 extends JFrame{

private JPanel jPanel = null;
private static JTable jTable = null;
public Tela1()	{
	super ( "Tela " );
	initialize();
	setVisible ( true );
	setLocation(350,200);

}

private void initialize() {
    this.setSize(new Dimension(495, 321));
    this.setContentPane(getJPanel());
	
}


private JPanel getJPanel() {
	if (jPanel == null) {
		jPanel = new JPanel();
		jPanel.setLayout(null);
		jPanel.add(getJTable(), null);
	}
	return jPanel;
}

public static void Conexao()
{
	  String data = "jdbc:odbc:dbdemos"; 
        try {
     	     Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
             Connection conn = DriverManager.getConnection(
                 data, "", "");
             Statement st = conn.createStatement();
             ResultSet rec = st.executeQuery(
                 "SELECT * FROM Items ");
                 
             System.out.println("FIPS\tCOUNTRY\t\tYEAR\t" +
                 "ANTHRACITE PRODUCTION");
             while(rec.next()) {
                 System.out.println(rec.getString(1) +  "\t"
                         + rec.getString(2) + "\t\t"
                         + rec.getString(3) + "\t"
                         + rec.getString(4));
             }
             st.close();
         } catch (SQLException s) {
             System.out.println("SQL Error: " + s.toString() + " "
                 + s.getErrorCode() + " " + s.getSQLState());
         } catch (Exception e) {
             System.out.println("Error: " + e.toString()
                 + e.getMessage());
         }

}




/**
 * This method initializes jTable	
 * 	
 * @return javax.swing.JTable	
 */
private JTable getJTable() {
	if (jTable == null) {
		jTable = new JTable();
		jTable.setBounds(new Rectangle(85, 55, 375, 80));
		
	}
	return jTable;
}

public static void main(String[] args)	{
	Tela1 tela1 = new Tela1();
	tela1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	Conexao();

// ???
jTable.setModel(GeraModelo(rec));
// ???
}

 /**
    * Gera um modelo a partir de um ResultSet.
    * @param rs
    * @return Retorna um modelo de tabela contendo os dados de um ResulSet.
    * @throws java.lang.Exception
    *@Autor: Vitor Eduardo Patriarcha - Monolito Sistemas
    */
   public DefaultTableModel GeraModelo (ResultSet rs)  throws Exception
   {
       DefaultTableModel modelo = null;
    try{
     ResultSetMetaData rsmd;
     rsmd = rs.getMetaData();
          
     int num_col = 0;
     int cont = 0;
     num_col = rsmd.getColumnCount();
     int num_lin;
    
     rs.last();
     num_lin = rs.getRow();
     rs.beforeFirst();
    
     String dados[][] = new String [num_lin][num_col];
     String colunas[] = new String [num_col];
  
     for (int i = 1;i <= num_col; i++)
     {
       colunas[i - 1] = rsmd.getColumnLabel(i);
     }
    
     int a;   
     while (rs.next())
     {
       for (int x = 0; x < num_col; x++)
       {       
         a = rsmd.getColumnType(x + 1);
         if (a == 2)
         {
           dados[cont][x] = String.valueOf(rs.getString(x + 1));
         }else if (a == 91)
         {
           dados[cont][x] = String.valueOf(rs.getDate(x + 1));
         }else
         {
           dados[cont][x] = rs.getString(x + 1);
         }         
       } 
       cont ++;     
     }
     modelo = new DefaultTableModel(dados, colunas);
    
   } catch(Exception e) {
       JOptionPane.showMessageDialog( null,"Erro na Função GeraModelo - " + e.getMessage(), "Erro", JOptionPane.INFORMATION_MESSAGE ); 
   }   
    
     return modelo;
   } 

}