Cómo mostrar los resultados de una consulta en una tabla usando Java
En aplicaciones prácticas, podemos utilizar Vector, JTable y AbstractTableModel para solucionar este problema. A continuación, se presenta en detalle el método de implementación.
1. Introducción a la clase Vector, la clase JTable y la clase AbstractTableModel:
1 Vector de categoría:
La clase Vector es una clase de colección histórica de Java y. pertenece al paquete java.util. Envuelve listas enlazadas heterogéneas y mezclas de matrices y tiene las dos características siguientes:
*Los vectores son heterogéneos y no requieren que cada elemento tenga el mismo tipo. Se pueden mezclar varios tipos de objetos en el vector; p>
* Los vectores son un híbrido de matrices en el sentido de que pueden crecer dinámicamente a medida que se agregan elementos.
Su heterogeneidad es consistente con las características de diferentes tipos de atributos en los registros de la base de datos, y su naturaleza dinámica es consistente con las características del número incierto de registros del conjunto de resultados en las consultas de la base de datos.
El vector de categoría se define de la siguiente manera:
El vector de clase pública extiende la lista abstracta
Lista de implementos, clonable, serializable
Métodos implementados para buscar, agregar y eliminar miembros vectoriales. Por ejemplo, add(Object obj) puede agregar fácilmente un objeto; Get(int index) puede obtener fácilmente un objeto en el vector; remove(object object) puede eliminar fácilmente el objeto en el vector.
2.Clase JTable:
El componente JTable es un widget relativamente complejo en el componente Swing. Pertenece al paquete javax.swing y puede mostrar datos en forma de dos. -tabla dimensional. La clase JTable se define de la siguiente manera:
La clase pública JTable extiende JComponent
implementa TableModelListener, Scrollable, TableColumnModelListener,
ListSelectionListener, CellEditorListener, accesible {…} p>
La clase JTable tiene las siguientes características a la hora de mostrar datos:
Personalización: el modo de visualización y el estado de edición de los datos se pueden personalizar;
*Heterogeneidad: se pueden mostrar diferentes tipos de objetos de datos, incluso objetos complejos como colores, iconos, etc.;
*Simplicidad: de forma predeterminada, puede configurar fácilmente una tabla bidimensional.
Su personalización puede satisfacer las necesidades de diferentes usuarios y ocasiones, y su heterogeneidad también coincide con las características de diferentes tipos de atributos en el conjunto de resultados de acceso a la base de datos. La clase JTable proporciona métodos de operación de tablas bidimensionales extremadamente ricos, como la configuración de la compilación.
Estado de serie, modo de visualización, selección de nivel, etc. , que no se describirá en detalle aquí.
Antes de utilizar la clase JTable para mostrar datos, debe generar un modelo personalizado, un pintor de celdas o un editor de celdas, según corresponda. La clase AbstractListModel se utiliza para personalizar el modelo de datos del propio usuario, que se presentará más adelante.
La interfaz TableCellRenderer se usa para personalizar el renderizador de unidades y la interfaz TableCellEditor se usa para personalizar el editor de unidades. Estas dos interfaces se utilizan principalmente para procesar objetos de color. No se utilizan en los ejemplos y no se explicarán demasiado.
3. Clase AbstractTableModel:
La clase AbstractTableModel es una clase abstracta que no está completamente implementada y no se puede crear una instancia.
Al usarlo, el método debe implementarse en el programa. Pertenece a la clase javax.swing.table y se define de la siguiente manera:
La clase abstracta pública AbstractTableModel extiende el objeto
Implementa TableModel, Serializable{…}
La clase AbstractTableModel proporciona TableModel La implementación predeterminada de la mayoría de los métodos en la interfaz. La interfaz TableModel define la estructura de datos básica de JTable. Los usuarios quieren generar sus propios modelos de datos, lo cual está bien.
Todos los métodos en la interfaz TableModel se implementan para satisfacer las necesidades, pero la función de administrar tablas de audiencia es común a todos los modelos de datos. Entonces, la clase AbstractTableModel es. definido en javax.swing.table
para manejar este trabajo. No solo administra la tabla de audiencia, sino que también ayuda a generar eventos TableModelEvents y delegarlos a la audiencia.
Para generar un TableMode específico como una subclase de AbstractTableMode, se deben implementar al menos los siguientes tres métodos:
public int getRowCount()
public int; getColumnCount( );
Objeto público getValueAt(int fila, int columna);
En este punto, podemos construir una tabla bidimensional simple (5 × 5). El método es el siguiente:
modelo de tabla modelo de datos = new AbstractTableModel(){
public int getColumnCount(){ return 5;}
public int getRowCount( ){ return 5;}
Objeto público getValueAt(int fila, int col){ return new Integer(fila * col);}
};
Tabla JTable = nueva JTable (modelo de datos);
Panel de desplazamiento JScrollPane = nueva JScrollPane(tabla);
2. Base de datos y su método de conexión:
Esta El ejemplo utiliza el sistema de base de datos Sybase. La base de datos se almacena en el servidor de base de datos. La ruta es: D:/WORKER, el nombre de la base de datos es: trabajador.dbf tiene los siguientes campos:
Nombre de campo
Tipo
Número de empleado p>
Cadena de longitud variable
Wname (nombre del empleado)
Cadena de longitud variable
Sexo (género)
Sí Variable cadena de longitud
Nacimiento (fecha de nacimiento)
Fecha
Salario
Flotador
Para conectarse a Para acceder a esta base de datos, necesita utilizar la clase DriverManager del paquete java.sql. Esta clase es una clase de utilidad para gestionar controladores JDBC. Proporciona métodos para obtener una conexión a través del controlador, registrarse, cancelar el controlador, establecer el tiempo de espera de registro y acceso a la base de datos, etc.
El método de conexión específico es el siguiente:
Paso 1: Localice, cargue y vincule la clase SybDriver;
driver = " com . Sybase . JDBC . syb driver "; >
controlador syb controlador syb =(controlador syb)clase para nombre(controlador). nueva instancia();
Paso 2: Registre la clase SybDriver;
administrador de controladores registre el controlador (controlador syb);
Paso 3: Obtenga SybConnection. objeto Cita.
usuario = " sa
Contraseña = " ";
URL = " JDBC:Sybase:Tds:202.117.203.114:5000/WORKER"; p>
conexión syb =(conexión syb)administrador de controladores obtener conexión
(dirección web, usuario, contraseña);
Una vez establecida la conexión, puede utilizarla. la interfaz de declaración Consulta y cambia la base de datos
3. Método de implementación:
Debido a limitaciones de espacio, aquí solo se proporciona el código principal y la introducción del paquete, el procesamiento de la interfaz y las variables. la definición y otras partes no se introducen.
p>
Paso uno: Declaración de objeto
AbstractTableModel tm// Declarar un objeto AbstractTableModel
JTable. jg _ table//Declarar un objeto similar a JTable
Vector vect//Declarar objeto vectorial
JScrollPane jsp//Declarar un objeto de barra de desplazamiento
Título de cadena []={"Número de empleado", "Nombre del empleado", "Sexo", "Fecha de nacimiento", "Salario"};
//Nombres de columnas de tabla bidimensional
Paso 2: Personaliza el formulario.
1. Implementa el método en el objeto AbstractTableModel tm:
vect = new vector() // Crea una instancia del vector
<; p>tm=new AbstractTableModel(){public int getColumnCount(){
Devolver title.length}//Obtener el número de filas de la tabla
public int getRowCount(){
Return vect. size ();}//Obtener el número de filas en la tabla
Objeto público getValueAt(int fila, int columna){
Si (!vect.isEmpty())
Retorno
((Vector)vect.elementAt(row)).elementAt(columna); p>
Otro
Devolver null}//Obtener el valor del atributo de unidad en la cuadrícula
Cadena pública getColumnName(int column){
Devolver título [columna];}//Establecer nombre de columna de tabla
public void setvalue at(Valor de objeto, fila int, columna int){}
//El modelo de datos no se puede editar, este método se establece en nulo.
Clase pública getColumnClass(int c){
Devuelve getValueAt(0, c). getClass();
}//Obtiene la clase de objeto a la que pertenece la columna.
El booleano público es una tabla con celdas (fila int, columna int){
Devuelve falso} // Establecer celdas como no editables es la implementación predeterminada.
};
2. Formulario personalizado:
jg _ table = new JTable(TM); //Genere su propio modelo de datos
Jg_table.setToolTipText("Mostrar todos los resultados de la consulta"); //Establecer sugerencias de ayuda
jg_table.setautoresizemode(JTable.AUTO_RESIZE_OFF);
//Establecer el modo de ajuste del tamaño de la tabla
jg_table . setcellselectionenabled(false); //Establece el método de selección de celdas
jg_table . setshowverticallines(true);
jg_table.setshowhorizontallines(true);
JSP = new JScrollPane(jg_table);//Agregar barras de desplazamiento a la tabla
Tercer paso: Mostrar la consulta resultados.
1. Conéctese a la base de datos: Se proporciona la segunda parte.
2. Consulta de base de datos:
Declaración stmt = conexión. crear declaración();
ResultSet RS = stmt ejecutar consulta(" seleccionar * del trabajador ". );
3. Mostrar los resultados de la consulta:
vect . remove allements(); //Inicializa el objeto vectorial
TM . /Actualizar contenido de la tabla
while(rs.next()){
Vector rec _ Vector = new Vector();
//Obtener datos de la conjunto de resultados, poner en el vector rec_vector.
rec _ vector . agregar elemento(RS . getstring(1));
rec _ vector . agregar elemento(RS . getstring(2)); >rec _ vector . agregar elemento(RS . getstring(3));
rec _ vector . agregar elemento(RS . getdate(4)); element(new Float(RS . get Float(5)));
vect . add element(rec _ vector); //Vector rec_vector se agrega al vector.
}
TM . firetablestructurechanged(); //Actualiza la tabla para mostrar el contenido del vector.