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