Java - Filtrar Consulta en jTable basado en ResultSet

   
Vista:

Filtrar Consulta en jTable basado en ResultSet

Publicado por Luis Leon (15 intervenciones) el 21/02/2008 20:54:09
Saludos amigos, quiero hacerles una consulta para ver que me sugieren. Estoy haciendo una ventana de consulta. Un JTable y JTextField. De manera que al ir escribiendo en el JTextField, se deberia ir filtrando la informacion consultada, actualizando el JTable en base a un ResultSet. Cuando hago la prueba con una tabla de 12 registros funciona a la perfeccion, el detalle es que cuando la prueba con una tabla de 40 mil registros, se pone lentisimo. Me gustaria tener su recomendaciones sobre lo que podria hacer al respecto ... Es correcto lo que estoy haciendo ? Como podria mejorarlo ? .. Agradezco mucho sus comentarios. Que utilizo es el siguiente:

// *** JDialgo JBuscar ***


public class JBuscar extends javax.swing.JDialog implements TableModelListener {

private Connection conexion;
private ResultSet consulta;
private ResultSetTableModel tableModel;

// *** Constructor ***

public JBuscar() {
Class.forName("com.ibm.as400.access.AS400JDBCDriver");
conexion=DriverManager.getConnection(url,usuarios,clave);
Statement sentencia=CONEXION.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE, ResultSet.HOLD_CURSORS_OVER_COMMIT);
consulta=sentencia.executeQuery("SELECT CODIGOPAIS, DESCRIPCIONPAIS FROM PAIS");
tableModel = new ResultSetTableModel(consulta);
initComponents();
}

// *** initComponents ***

private void initComponents() {
...

jTextField1 = new javax.swing.JTextField();
jScrollPane1 = new javax.swing.JScrollPane();
jTable1 = new JTable(tableModel);

...
}

// *** Evento CaretUpdate del jTextField ***

private void jTextField1CaretUpdate(javax.swing.event.CaretEvent evt) {
if (!this.jTextField1.getText().trim().equals("")) {
consulta = FrmPrincipal.getConexionPrincipal().Consulta("SELECT CODIGOPAIS, DESCRIPCIONPAIS FROM PAIS WHERE CODIGOPAIS + " LIKE '%" + this.jTextField1.getText().trim().toUpperCase() + "%'");
} else {
consulta = FrmPrincipal.getConexionPrincipal().Consulta("SELECT CODIGOPAIS, DESCRIPCIONPAIS FROM PAIS");
}
tableModel = new ResultSetTableModel(consulta);
this.jTable1.setModel(tableModel);

}

}

//**************************
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Filtrar Consulta en jTable basado en ResultSet

Publicado por Yamil Bracho (2074 intervenciones) el 21/02/2008 23:25:00
Y no te parece que 40000 registros es mucho para mostrar en una pantalla ?
Lo mejor es que hagas pagineado de quizas 50 en 50 registros asi el usuario no esperara mucho para ver los datos y tu servidor no se recargara con esa consulta.
Otras sugerencias es que deberias tener un indice basado en el campo CodigoPais y si puedes usa stored procedures
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar