Cara segue abaixo 2 codigo exemplo tirado do livro Java como programar
O 1º cria um modelo de tabela.
O 2º instacia uma tabela com o modelo criado no primeiro codigo.
A respeito da criação de modelo de tabelas será um pouco complicado se vc é iniciante na arquitetura swing, qualquer duvida poste ai q a galera responde.
Modifique o codigo para se adaptar a sua necessidade e vai modificando ele pra vc aprender melhor.
// Fig. 25.28: ResultSetTableModel.java
// Um TableModel que fornece dados ResultSet a uma JTable.
import java.sql.Connection;
import java.sql.Statement;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import javax.swing.table.AbstractTableModel;
// Linhas e colunas do ResultSet são contadas a partir de 1 e linhas e
// colunas JTable são contadas a partir de 0. Ao processar
// linhas ou colunas de ResultSet para utilização em uma JTable, é
// necessário adicionar 1 ao número de linha ou coluna para manipular
// a coluna apropriada de ResultSet (isto é, coluna 0 de JTable é a
// coluna de ResultSet 1 e a linha de JTable 0 é a linha de ResultSet 1).
public class ResultSetTableModel extends AbstractTableModel
{
private Connection connection;
private Statement statement;
private ResultSet resultSet;
private ResultSetMetaData metaData;
private int numberOfRows;
// monitora o status da conexão de banco de dados
private boolean connectedToDatabase = false;
// construtor inicializa resultSet e obtém seu objeto de metadados;
// determina número de linhas
public ResultSetTableModel( String driver, String url,
String username, String password, String query )
throws SQLException, ClassNotFoundException
{
// carrega classe de driver do banco de dados
Class.forName( driver );
// conecta-se ao banco de dados
connection = DriverManager.getConnection( url, username, password );
// cria Statement para consultar banco de dados
statement = connection.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY );
// atualiza status de conexão de banco de dados
connectedToDatabase = true;
// configura consulta e a executa
setQuery( query );
} // fim do construtor ResultSetTableModel
// obtém a classe que representa o tipo de coluna
public Class getColumnClass( int column )throws IllegalStateException
{
// assegura que o banco de dados conexão está disponível
if ( !connectedToDatabase )
throw new IllegalStateException( "Not Connected to Database" );
// determina a classe Java de coluna
try
{
String className = metaData.getColumnClassName( column + 1 );
// retorna objeto Class que representa className
return Class.forName( className );
} // fim do try
catch ( Exception exception )
{
exception.printStackTrace();
} // fim do catch
return Object.class; // se ocorrerem os problemas acima, assume tipo Object
} // fim do método getColumnClass
// obtém número de colunas em ResultSet
public int getColumnCount()throws IllegalStateException
{
// assegura que o banco de dados conexão está disponível
if ( !connectedToDatabase )
throw new IllegalStateException( "Not Connected to Database" );
// determina número de colunas
try
{
return metaData.getColumnCount();
} // fim do try
catch ( SQLException sqlException )
{
sqlException.printStackTrace();
} // fim do catch
return 0; // se ocorrerem os problemas acima, retorna 0 para o número de colunas
} // fim do método getColumnCount
// obtém nome de uma coluna particular em ResultSet
public String getColumnName( int column )throws IllegalStateException
{
// assegura que o banco de dados conexão está disponível
if ( !connectedToDatabase )
throw new IllegalStateException( "Not Connected to Database" );
// determina o nome de coluna
try
{
return metaData.getColumnName( column + 1 );
} // fim do try
catch ( SQLException sqlException )
{
sqlException.printStackTrace();
} // fim do catch
return ""; // se ocorrerem problemas, retorna string vazia para nome de coluna
} // fim do método getColumnName
// retorna número de linhas em ResultSet
public int getRowCount()throws IllegalStateException
{
// assegura que o banco de dados conexão está disponível
if ( !connectedToDatabase )
throw new IllegalStateException( "Not Connected to Database" );
return numberOfRows;
} // fim do método getRowCount
// obtém valor na linha e coluna particular
public Object getValueAt( int row, int column )
throws IllegalStateException
{
// assegura que o banco de dados conexão está disponível
if ( !connectedToDatabase )
throw new IllegalStateException( "Not Connected to Database" );
// obtém um valor na linha e coluna de ResultSet especificada
try
{
resultSet.absolute( row + 1 );
return resultSet.getObject( column + 1 );
} // fim do try
catch ( SQLException sqlException )
{
sqlException.printStackTrace();
} // fim do catch
return ""; // se ocorrerem problemas, retorna objeto string vazio
} // fim do método getValueAt
// configura nova string de consulta de banco de dados
public void setQuery( String query )
throws SQLException, IllegalStateException
{
// assegura que o banco de dados conexão está disponível
if ( !connectedToDatabase )
throw new IllegalStateException( "Not Connected to Database" );
// especifica consulta e a executa
resultSet = statement.executeQuery( query );
// obtém metadados para ResultSet
metaData = resultSet.getMetaData();
// determina o número de linhas em ResultSet
resultSet.last(); // move para a última linha
numberOfRows = resultSet.getRow(); // obtém número de linha
// notifica a JTable de que modelo foi alterado
fireTableStructureChanged();
} // fim do método setQuery
// fecha Statement e Connection
public void disconnectFromDatabase()
{
if ( !connectedToDatabase )
return;
// fecha Statement e Connection
try
{
statement.close();
connection.close();
} // fim do try
catch ( SQLException sqlException )
{
sqlException.printStackTrace();
} // fim do catch
finally // atualiza status de conexão de banco de dados
{
connectedToDatabase = false;
} // fim do finally
} // fim do método disconnectFromDatabase
} // fim da classe ResultSetTableModel
/**************************************************************************
* (C) Copyright 1992-2005 by Deitel & Associates, Inc. and *
* Pearson Education, Inc. All Rights Reserved. *
* *
* DISCLAIMER: The authors and publisher of this book have used their *
* best efforts in preparing the book. These efforts include the *
* development, research, and testing of the theories and programs *
* to determine their effectiveness. The authors and publisher make *
* no warranty of any kind, expressed or implied, with regard to these *
* programs or to the documentation contained in these books. The authors *
* and publisher shall not be liable in any event for incidental or *
* consequential damages in connection with, or arising out of, the *
* furnishing, performance, or use of these programs. *
*************************************************************************/
// Fig. 25.31: DisplayQueryResults.java
// Exibe o conteúdo da tabela Authors no
// banco de dados Books.
import java.awt.BorderLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.sql.SQLException;
import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.JScrollPane;
import javax.swing.ScrollPaneConstants;
import javax.swing.JTable;
import javax.swing.JOptionPane;
import javax.swing.JButton;
import javax.swing.Box;
public class DisplayQueryResults extends JFrame
{
// driver JDBC e URL de banco de dados
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DATABASE_URL = "jdbc:mysql://5.77.248.104/imobil";
static final String USERNAME= "monty";
static final String PASSWORD= "senha";
// consulta padrão seleciona todas as linhas de tabela authors
static final String DEFAULT_QUERY = "SELECT * FROM cliente";
private ResultSetTableModel tableModel;
private JTextArea queryArea;
// cria o ResultSetTableModel e GUI
public DisplayQueryResults()
{
super( "Displaying Query Results" );
// cria o ResultSetTableModel e exibe tabela de banco de dados
try
{
// cria o TableModel para resultados da consulta SELECT * FROM authors
tableModel = new ResultSetTableModel( JDBC_DRIVER, DATABASE_URL,
USERNAME, PASSWORD, DEFAULT_QUERY );
// configura JTextArea em que o usuário digita consultas
queryArea = new JTextArea( DEFAULT_QUERY, 3, 100 );
queryArea.setWrapStyleWord( true );
queryArea.setLineWrap( true );
JScrollPane scrollPane = new JScrollPane( queryArea,
ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER );
// configura o JButton para enviar consulta
JButton submitButton = new JButton( "Submit Query" );
// cria o Box para gerenciar o posicionamento da queryArea e do
// submitButton na GUI
Box box = Box.createHorizontalBox();
box.add( scrollPane );
box.add( submitButton );
// cria o delegado JTable para tableModel
JTable resultTable = new JTable( tableModel );
// posiciona os componentes GUI no painel de conteúdo
add( box, BorderLayout.NORTH );
add( new JScrollPane( resultTable ), BorderLayout.CENTER );
// cria evento ouvinte para submitButton
submitButton.addActionListener(
new ActionListener()
{
// passa consulta para modelo de tabela
public void actionPerformed( ActionEvent event )
{
// realiza uma nova consulta
try
{
tableModel.setQuery( queryArea.getText() );
} // fim do try
catch ( SQLException sqlException )
{
JOptionPane.showMessageDialog( null,
sqlException.getMessage(), "Database error",
JOptionPane.ERROR_MESSAGE );
// tenta recuperar a partir da consulta de usuário inválida
// executando consulta padrão
try
{
tableModel.setQuery( DEFAULT_QUERY );
queryArea.setText( DEFAULT_QUERY );
} // fim do try
catch ( SQLException sqlException2 )
{
JOptionPane.showMessageDialog( null,
sqlException2.getMessage(), "Database error",
JOptionPane.ERROR_MESSAGE );
// assegura que a conexão de banco de dados está fechada
tableModel.disconnectFromDatabase();
System.exit( 1 ); // termina o aplicativo
} // fim do catch interno
} // fim do catch externo
} // fim do método actionPerformed
} // fim da classe ActionListener interna
); // fim da chamada para addActionListener
setSize( 500, 250 ); // configura o tamanho da janela
setVisible( true ); // exibe a janela
} // fim do try
catch ( ClassNotFoundException classNotFound )
{
JOptionPane.showMessageDialog( null,
"MySQL driver not found", "Driver not found",
JOptionPane.ERROR_MESSAGE );
System.exit( 1 ); // termina o aplicativo
} // fim do catch
catch ( SQLException sqlException )
{
JOptionPane.showMessageDialog( null, sqlException.getMessage(),
"Database error", JOptionPane.ERROR_MESSAGE );
// assegura que a conexão de banco de dados está fechada
tableModel.disconnectFromDatabase();
System.exit( 1 ); // termina o aplicativo
} // fim do catch
// dispõe da janela quando o usuário fecha o aplicativo (isso sobrescreve
// o padrão de HIDE_ON_CLOSE)
setDefaultCloseOperation( DISPOSE_ON_CLOSE );
// assegura que a conexão de banco de dados é fechada quando usuário fecha o aplicativo
addWindowListener(
new WindowAdapter()
{
// desconecta-se do banco de dados e sai quando a janela for fechada
public void windowClosed( WindowEvent event )
{
tableModel.disconnectFromDatabase();
System.exit( 0 );
} // fim do método windowClosed
} // fim da classe WindowAdapter interna
); // fim da chamada a addWindowListener
} // fim do construtor DisplayQueryResults
// executa o aplicativo
public static void main( String args[] )
{
new DisplayQueryResults();
} // fim de main
} // fim da classe DisplayQueryResults
/**************************************************************************
* (C) Copyright 1992-2005 by Deitel & Associates, Inc. and *
* Pearson Education, Inc. All Rights Reserved. *
* *
* DISCLAIMER: The authors and publisher of this book have used their *
* best efforts in preparing the book. These efforts include the *
* development, research, and testing of the theories and programs *
* to determine their effectiveness. The authors and publisher make *
* no warranty of any kind, expressed or implied, with regard to these *
* programs or to the documentation contained in these books. The authors *
* and publisher shall not be liable in any event for incidental or *
* consequential damages in connection with, or arising out of, the *
* furnishing, performance, or use of these programs. *
*************************************************************************/