TEnho uma aplicação que faz a busca no banco de dados com mais de 18 mil registros, e guarda a busca em um ArrayList, e um metodo refreshTable() que joga o ArrayList em uma jTable, em uma consulta simples ao banco select * from consegui mostra na table, mas qnd fiz uma busca envolvendo 3 tabelas do bd acontece o erro, o q sera?
package Acesso_dados;
import Apresentacao.ConsultaLocalizacao;
import Negocio.Amostra;
import Negocio.ConsultaNumCampo;
import java.util.ArrayList;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.swing.JOptionPane;
/**
*
*
*/
public class AmostrasDAO {
private Connection connection;
public AmostrasDAO() throws SQLException{
this.connection = ConnectionFactory.getConnection();
}
// Mostra as localizações a partir dos projetos.
public ArrayList<ConsultaNumCampo> getprojeto(String n) throws SQLException{
ArrayList<ConsultaNumCampo> res = new ArrayList<ConsultaNumCampo>();
// ConsultaNumCampo cn = new ConsultaNumCampo();
PreparedStatement stmt = connection.prepareStatement("SELECT L.DESCRICAO, A.NUM_PECAS, A.OBS, M.NUMERO_CAMPO" +
" FROM LOCALIZACOES L, AMOSTRAS_LOCALIZACAO A, AMOSTRAS M " +
"WHERE M.NUMERO_CAMPO LIKE '%"+n+"%'");
ResultSet rs = stmt.executeQuery();
//vai no banco executa a query e joga no resultset
while(rs.next()){
ConsultaNumCampo numCampo = new ConsultaNumCampo();
numCampo.setnCampo(rs.getString("NUMERO_CAMPO"));
numCampo.setNomeLocalizacao(rs.getString("DESCRICAO"));
numCampo.setNumPecas(rs.getString("NUM_PECAS"));
numCampo.setObs(rs.getString("OBS"));
res.add(numCampo);
}
rs.close();
stmt.close();
connection.close();
return res;
}
}
package Apresentacao;
import Acesso_dados.AmostrasDAO;
import Negocio.Amostra;
import Negocio.ConsultaNumCampo;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.table.DefaultTableModel;
/**
*
* @author
*/
public class ConsultaLocalizacao extends javax.swing.JInternalFrame {
private AmostrasDAO dao;
ArrayList<ConsultaNumCampo> res = new ArrayList<ConsultaNumCampo>();
/** Creates new form ConsultaLocalizacao */
public ConsultaLocalizacao() throws SQLException {
dao = new AmostrasDAO();
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.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
jLabel1 = new javax.swing.JLabel();
jtNumeroCampo = new javax.swing.JTextField();
jbPesquisarNum = new javax.swing.JButton();
jLabel2 = new javax.swing.JLabel();
jtNatureza = new javax.swing.JTextField();
jButton2 = new javax.swing.JButton();
jScrollPane1 = new javax.swing.JScrollPane();
jtbResultado = new javax.swing.JTable();
setVisible(true);
jLabel1.setText("Nº de Campo:");
jbPesquisarNum.setText("Pesquisar");
jbPesquisarNum.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jbPesquisarNumActionPerformed(evt);
}
});
jLabel2.setText("Natureza:");
jButton2.setText("Pesquisar");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
jtbResultado.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
},
new String [] {
"N° Campo", "Loacalização", "N° de peças", "Observação"
}
) {
boolean[] canEdit = new boolean [] {
false, false, true, true
};
public boolean isCellEditable(int rowIndex, int columnIndex) {
return canEdit [columnIndex];
}
});
jScrollPane1.setViewportView(jtbResultado);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(62, 62, 62)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jLabel2)
.addComponent(jLabel1))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jtNumeroCampo, javax.swing.GroupLayout.PREFERRED_SIZE, 163, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jtNatureza, javax.swing.GroupLayout.PREFERRED_SIZE, 163, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(31, 31, 31)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jButton2)
.addComponent(jbPesquisarNum)))
.addGroup(layout.createSequentialGroup()
.addGap(23, 23, 23)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addContainerGap(26, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1)
.addComponent(jtNumeroCampo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jbPesquisarNum))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel2)
.addComponent(jtNatureza, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jButton2))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 49, Short.MAX_VALUE)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 210, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(20, 20, 20))
);
pack();
}// </editor-fold>
private void refreshTable() throws SQLException {
DefaultTableModel model = (DefaultTableModel) jtbResultado.getModel();
model.setNumRows(0);
res = dao.getprojeto(jtNumeroCampo.getText());
for (ConsultaNumCampo elem : res) {
Object[] dados = {elem.getnCampo(),elem.getNomeLocalizacao(),elem.getNumPecas(),elem.getObs()
};
model.addRow(dados);
}
}
private void jbPesquisarNumActionPerformed(java.awt.event.ActionEvent evt) {
try {
refreshTable();
} catch (SQLException ex) {
Logger.getLogger(ConsultaLocalizacao.class.getName()).log(Level.SEVERE, null, ex);
}
}
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
// Variables declaration - do not modify
private javax.swing.JButton jButton2;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JButton jbPesquisarNum;
private javax.swing.JTextField jtNatureza;
private javax.swing.JTextField jtNumeroCampo;
private javax.swing.JTable jtbResultado;
// End of variables declaration
/**
* @return the num_campo
*/
}
Se Alugem poder me ajudar ficarei grato!
