Java Reference
In-Depth Information
ResultSetTableModel
Class
Class
ResultSetTableModel
(Fig. 24.25) extends class
AbstractTableModel
(package
javax.swing.table
), which implements interface
TableModel
.
ResultSetTableModel
overrides
TableModel
methods
getColumnClass
,
getColumnCount
,
getColumnName
,
get-
RowCount
and
getValueAt
. The default implementations of
TableModel
methods
is-
CellEditable
and
setValueAt
(provided by
AbstractTableModel
) are not overridden,
because this example does not support editing the
JTable
cells. The default implementa-
tions of
TableModel
methods
addTableModelListener
and
removeTableModelListener
(provided by
AbstractTableModel
) are not overridden, because the implementations of
these methods in
AbstractTableModel
properly add and remove event listeners.
1
// Fig. 24.25: ResultSetTableModel.java
2
// A TableModel that supplies ResultSet data to a JTable.
3
import
java.sql.Connection;
4
import
java.sql.Statement;
5
import
java.sql.DriverManager;
6
import
java.sql.ResultSet;
7
import
java.sql.ResultSetMetaData;
8
import
java.sql.SQLException;
9
import
javax.swing.table.AbstractTableModel;
10
11
// ResultSet rows and columns are counted from 1 and JTable
12
// rows and columns are counted from 0. When processing
13
// ResultSet rows or columns for use in a JTable, it is
14
// necessary to add 1 to the row or column number to manipulate
15
// the appropriate ResultSet column (i.e., JTable column 0 is
16
// ResultSet column 1 and JTable row 0 is ResultSet row 1).
17
public
class
ResultSetTableModel
extends
AbstractTableModel
18
{
19
private
final
Connection connection;
20
private
final
Statement statement;
21
private
ResultSet resultSet;
22
private
ResultSetMetaData metaData;
23
private
int numberOfRows;
24
25
// keep track of database connection status
private
boolean
connectedToDatabase =
false
;
26
27
28
// constructor initializes resultSet and obtains its metadata object;
29
// determines number of rows
30
public
ResultSetTableModel(String url, String username,
31
String password, String query)
throws
SQLException
32
{
33
// connect to database
34
connection = DriverManager.getConnection(url, username, password);
35
36
// create Statement to query database
statement = connection.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE
,
ResultSet.CONCUR_READ_ONLY
);
37
38
39
Fig. 24.25
|
A
TableModel
that supplies
ResultSet
data to a
JTable
. (Part 1 of 4.)