Conexão com Derby pra setar lista com filtro

Olá!
Eu Estou com um problema para criar 2 classes, uma de conexão e outra que será um Jform com uma tabela e campo de pesquisa (filtrando os resultados no banco de dados). eu consegui fazer algo parecido usando MySQL, preciso que o banco seja embarcado na aplicação, e não sei fazer isso em MySQL, nem se existe como, então comecei a fazer em derby.
Já fui em tudo quanto é site e não consigo achar uma forma correta de conectar as duas classe,

clase que vai ser a de pesquisa

[code]/*
package associacao;

import static associacao.conexao.conect;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

public class Busca extends javax.swing.JFrame {

private JTable tabela;
private DefaultTableModel modelo = new DefaultTableModel();
private BancoDao con;

public Busca(BancoDao conect) {
    initComponents();
    con = conect;
    criarTabela();
    jScrollPane1.setViewportView(tabela);
}

private void criarTabela() {
    tabela = new JTable(modelo);
    modelo.addColumn("id");// adicionando colunas na tabela
    modelo.addColumn("nome");
    modelo.addColumn("classif");
    modelo.addColumn("categoria");
    modelo.addColumn("horario");
    modelo.addColumn("sinopse");
    modelo.addColumn("cinema");
    

    tabela.getColumnModel().getColumn(0).setPreferredWidth(20);
    tabela.getColumnModel().getColumn(1).setPreferredWidth(120);
    tabela.getColumnModel().getColumn(2).setPreferredWidth(120);
    tabela.getColumnModel().getColumn(3).setPreferredWidth(120);
    tabela.getColumnModel().getColumn(4).setPreferredWidth(120);
    tabela.getColumnModel().getColumn(5).setPreferredWidth(120);
    tabela.getColumnModel().getColumn(6).setPreferredWidth(120);

    Resultado("SELECT * FROM pessoa");

}
private void Resultado(String sql) {
    modelo.setNumRows(0);
    try {
        con.mostraTabelaNomes();
    } catch (SQLException ex) {
        Logger.getLogger(Busca.class.getName()).log(Level.SEVERE, null, ex);
    }
}
@SuppressWarnings("unchecked")
private void initComponents() {

    jScrollPane1 = new javax.swing.JScrollPane();
    TxtBusca = new javax.swing.JTextField();
    btnBuscar = new javax.swing.JButton();

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

    TxtBusca.setText("jTextField1");

    btnBuscar.setText("jButton1");

    javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
    getContentPane().setLayout(layout);
    layout.setHorizontalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(layout.createSequentialGroup()
            .addContainerGap()
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addComponent(jScrollPane1)
                .addComponent(TxtBusca))
            .addContainerGap())
        .addGroup(layout.createSequentialGroup()
            .addGap(152, 152, 152)
            .addComponent(btnBuscar)
            .addContainerGap(175, Short.MAX_VALUE))
    );
    layout.setVerticalGroup(
        layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
        .addGroup(layout.createSequentialGroup()
            .addGap(32, 32, 32)
            .addComponent(TxtBusca, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
            .addComponent(btnBuscar)
            .addGap(10, 10, 10)
            .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 193, Short.MAX_VALUE)
            .addContainerGap())
    );

    pack();
}
public static void main(String args[]) {
    try {
        for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
            if ("Nimbus".equals(info.getName())) {
                javax.swing.UIManager.setLookAndFeel(info.getClassName());
                break;
            }
        }
    } catch (ClassNotFoundException ex) {
        java.util.logging.Logger.getLogger(Busca.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (InstantiationException ex) {
        java.util.logging.Logger.getLogger(Busca.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (IllegalAccessException ex) {
        java.util.logging.Logger.getLogger(Busca.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    } catch (javax.swing.UnsupportedLookAndFeelException ex) {
        java.util.logging.Logger.getLogger(Busca.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
    }
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new Busca().setVisible(true);
        }
    });
}
// Variables declaration - do not modify                     
private javax.swing.JTextField TxtBusca;
private javax.swing.JButton btnBuscar;
private javax.swing.JScrollPane jScrollPane1;
// End of variables declaration                   

}
[/code]

classe de conexão que eu achei pesquisando adaptei pro meu projeto tirando

[code]
package associacao;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class BancoDao {
private String nomeBD;
private String driverBD;
private String stringDeConexao;
private Connection conexaoBD;
private Statement executor;

public BancoDao(){
	try{
		iniciar();
		mostraTabelaNomes();
		finalizar();
	}catch(Exception excep){
		excep.printStackTrace();
	}
}

private void iniciar() throws SQLException{
	nomeBD = "Associacao";
	driverBD = "org.apache.derby.jdbc.EmbeddedDriver";
	stringDeConexao = "jdbc:derby:" + nomeBD + ";create=true;root";
		conectaBDTeste();
		executor = conexaoBD.createStatement();
}

private void conectaBDTeste() throws SQLException {
	conexaoBD = DriverManager.getConnection(stringDeConexao);
	System.out.println("Conexão estabelecida com sucesso na base de dados '" + nomeBD+"'!");
}

private String lerNomes() throws IOException{
	BufferedReader ler = new BufferedReader( new InputStreamReader(System.in));
    String nome = "";
    try {
       while ( nome.length() == 0 ) {
          System.out.println("Digite um nome a ser adicionado na base de dados ou 'exit' para sair. ");
          nome = ler.readLine();
       }
    } catch (IOException e) {
    	throw new IOException("Não foi possivel ler o valor digitado." + e.getMessage(), e);
    }
    return nome;
}

public void mostraTabelaNomes() throws SQLException{
	ResultSet nomesNaTabela = executor.executeQuery("select * from PESSOA");
	System.out.println("\n");
    nomesNaTabela.close();
}

private void finalizar() throws SQLException{
		desconectaDB();
		encerraDB();
}

private void desconectaDB() throws SQLException{
	conexaoBD.close();
}

private void encerraDB() throws SQLException{
	if (driverBD.equals("org.apache.derby.jdbc.EmbeddedDriver")) {
       try {
          DriverManager.getConnection("jdbc:derby:;shutdown=true");
       } catch (SQLException se)  {	
          if ( se.getSQLState().equals("XJ015") ) {		
        	  System.out.println("Base de dados foi encerrada com sucesso!");	
          }else{
        	  throw new SQLException("Erro ao encerrar a base de dados! "+se.getMessage(),se.getSQLState(),se);
          }
       }
    }
}

public static void main  (String[] args) {
	new BancoDao();
}

}[/code]

Se tiverem como ajudar mandando artigo/tutoriais/exemplos de como fazer isso funcionar com o derby ou de como embargar o MySQL agradeço muito