Firebird e JTable

Penei, mas consegui, garimpando aqui e ali.

Consegui depois de dois dias (to iniciando) recuperar dados do banco de dados e adicionar numa jtable
vou passar o codigo.

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JFrame;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

public class NewJFrame extends JFrame {
private JTable jTable1 = null;

public NewJFrame() {
    initComponents();
      
}

// faz a conexao e joga o recordset pra Jtable
public void BdFromJtable() {
Connection con = null;
String teste = “SELECT NOME FROM Cliente;”;
try {
Class.forName(“org.firebirdsql.jdbc.FBDriver”);
con = DriverManager.getConnection(“jdbc:firebirdsql:escritorio/3050:C:\DataBase\banco.GDB”, “SYSDBA”, “masterkey”);
System.out.println(“Sucesso na conexão678! Massacre!\n”);
Statement stm = con.createStatement();
ResultSet rs = stm.executeQuery(teste);

        try {
            
            ResultSetMetaData metaData = rs.getMetaData();
            
            // nome das colunhas
            String[] colunas = new String[metaData.getColumnCount()];
            
            for (int i = 0; i < colunas.length; i++) {
                colunas[i] = metaData.getColumnName(i + 1);
                
            }
            // cria um modelo
            DefaultTableModel modelo = new DefaultTableModel(colunas, 0);
            // preenche o modelo
            while (rs.next()) {
                // uma linha
                String[] linha = new String[colunas.length];
                // adiciona valores na linha
                for (int i = 0; i < colunas.length; i++) {
                    linha[i] = rs.getString(i + 1);
                    
                }
                // adiciona a linha
                modelo.addRow(linha);
            }
            // seta o modelo na tabela
            jTable2.setModel(modelo);
            
        } catch (SQLException exc) {
            System.out.println(exc);
        }
        
    } catch(ClassNotFoundException e) {
        System.out.println("excessao ClassNotFound...");
        e.printStackTrace();
    } catch(SQLException e) {
        System.out.println("SQL Exception... Erro dos Bravos");
        e.printStackTrace();
    } finally {
        try {
            
            con.close();
        } catch(SQLException onConClose) {
            System.out.println("error on closing");
            onConClose.printStackTrace();
        }
    }
    
}

//Confesso, não sei tudo o q isso faz, mas…

//executa
private void Botao(java.awt.event.ActionEvent evt) {
BdFromJtable();
}

// Variables declaration - do not modify                     
private javax.swing.JButton jButton1;
private javax.swing.JList jList1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JTable jTable2;
private java.awt.List list1;
// End of variables declaration                   

}

na janela coloque um botao e uma Jtable de nome jTable1