específi ca del objeto 

JTable

, el objeto 

TableRowSorter

 interactúa con el objeto 

TableModel

 subyacente para 

reordenar las fi las, con base en los datos en esa columna. En la línea 129 se utiliza el método 

setRowSorter

 del 

método 

JTable

 para especifi car el objeto 

TableRowSorter

 para 

tablaResultados

.

Otra de las nuevas características de los objetos 

JTable

 es la habilidad de ver subconjuntos de los datos del 

objeto 

TableModel

 subyacente. A esto se le conoce como fi ltrar los datos. En las líneas 134 a 160 se registra un 

manejador de eventos para el 

botonFiltro

 que el usuario oprime para fi ltrar los datos. En el método 

action-

Performed

 (líneas 138 a 158), en la línea 140 se obtiene el texto de fi ltro. Si el usuario no especifi có un texto 

de fi ltro, en la línea 143 se utiliza el método 

setRowFilter

 de 

JTable

 para eliminar cualquier fi ltro anterior, 

estableciendo el fi ltro en 

null

. En caso contrario, en las líneas 148 y 149 se utiliza 

setRowFilter

 para especifi car 

un objeto 

RowFilter

 (del paquete 

javax.swing

) con base en la entrada del usuario. La clase 

RowFilter

 cuenta 

con varios métodos para crear fi ltros. El método 

static

regexFilter

 recibe un objeto 

String

 que contiene un 

patrón de expresión regular como argumento, y un conjunto opcional de índices que especifi can cuáles columnas 
se van a fi ltrar. Si no se especifi can índices, entonces se busca en todas las columnas. En este ejemplo, el patrón de 
expresión regular es el texto que escribió el usuario. Una vez establecido el fi ltro, se actualizan los datos mostrados 
en el objeto 

JTable

 con base en el objeto 

TableModel

 fi ltrado.

25.9 La interfaz 

RowSet

En los ejemplos anteriores, aprendido a realizar consultas en una base de datos al establecer en forma explícita una 
conexión (

Connection

) a la base de datos, preparar una instrucción (

Statement

) para consultar la base de datos 

y ejecutar la consulta. En esta sección demostraremos la interfaz 

RowSet

, la cual confi gura la conexión a la base de 

datos y prepara instrucciones de consulta en forma automática. La interfaz 

RowSet

 proporciona varios métodos 

establecer (get) que nos permiten especifi car las propiedades necesarias para establecer una conexión (como el URL 
de la base de datos, el nombre de usuario y la contraseña) y crear un objeto 

Statement

 (como una consulta). 

RowSet

 también cuenta con varios métodos 

obtener (get) para devolver estas propiedades.

Hay dos tipos de objetos 

RowSet

: conectados y desconectados. Un objeto 

RowSet

conectado

 se conecta a 

la base de datos una sola vez, y permanece conectado hasta que termina la aplicación. Un objeto 

RowSet

desco-

nectado

 se conecta a la base de datos, ejecuta una consulta para obtener los datos de la base de datos y después 

cierra la conexión. Un programa puede cambiar los datos en un objeto 

RowSet

 desconectado, mientras éste se 

encuentre desconectado. Los datos modifi cados pueden actualizarse en la base de datos, después de que un objeto 

RowSet

 desconectado reestablece la conexión a la base de datos.

El paquete 

javax.sql.rowset

 contiene dos subinterfaces de 

RowSet: JdbcRowSet

 y 

CachedRowSet

Jdbc-

RowSet

, un objeto 

RowSet

 conectado, actúa como una envoltura alrededor de un objeto 

ResultSet

 y nos per-

mite desplazarnos a través de las fi las en el objeto 

ResultSet

, y también actualizarlas. Recuerde que, de manera 

predeterminada, un objeto 

ResultSet

 no es desplazable y es de sólo lectura; debemos establecer explícitamente 

la constante de tipo del conjunto de resultados a 

TYPE_SCROLL_INSENSITIVE

 y establecer la constante de con-

currencia del conjunto de resultados 

CONCUR_UPDATABLE

 para hacer que un objeto 

ResultSet

 sea desplazable 

y pueda actualizarse. Un objeto 

JdbcRowSet

 es desplazable y puede actualizarse de manera predeterminada. 

CachedRowSet

, un objeto 

RowSet

 desconectado, coloca los datos de un objeto 

ResultSet

 en caché de memoria 

y los desconecta de la base de datos. Al igual que un objeto 

JdbcRowSet

, un objeto 

CachedRowSet

 es desplaza-

ble y puede actualizarse de manera predeterminada. Un objeto 

CachedRowSet

 también es serializable, por lo que 

puede pasarse de una aplicación de Java a otra mediante una red, como Internet. Sin embargo, 

CachedRowSet

 

tiene una limitación: la cantidad de datos que pueden almacenarse en memoria es limitada. El paquete 

javax.

sql.rowset

 contiene otras tres subinterfaces de 

RowSet

. Para obtener detalles de estas interfaces, visite 

java.

sun.com/javase/6/docs/technotes/guides/jdbc/getstart/rowsetImpl.html

.

Tip de portabilidad 25.5

Un objeto 

RowSet

 puede proporcionar capacidad de desplazamiento a los controladores que no tienen soporte para 

objetos 

ResultSet

 desplazables.

En la fi gura 25.29 se reimplementa el ejemplo de la fi gura 25.23, usando un objeto 

RowSet

. En vez de 

establecer la conexión y crear un objeto 

Statement

de manera explícita, en la fi gura 25.29 utilizamos un objeto 

JdbcRowSet

 para crear los objetos 

Connection

 y 

Statement

 de manera automática.

25.9 La 

interfaz 

RowSet

1073

25_MAQ_CAP_25_DEITEL.indd1073

4/19/081:35:56AM