для создания таблицы не используй ее напрямую. Пользуйся моделью таблицы.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.SQLWarning;
import java.util.Vector;
import javax.swing.JTextArea;
import javax.swing.table.DefaultTableModel;
/**
* Этот класс предназначен для реализации модели таблицы
*
* @author admin
*
*/
public class DefaultReplyTableModel extends DefaultTableModel {
private ResultSetMetaData rsmd = null ;
private ResultSet resultSet = null ;
Vector data = this .getDataVector();
private Vector headers = null ;
/*
* (non-Javadoc)
*
* @see javax.swing.table.DefaultTableModel#getColumnName(int)
*/
@Override
public String getColumnName( int column) {
return super .getColumnName(column);
}
/**
* этот метод самостоятельно создает ResultSet согласно query и данному
* подключению. ResultSet будет иметь свойства:
* ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE
*
* @param connection
* @param query
*/
public void performResultSet(java.sql.Connection connection, String query) {
boolean stay = false;
java.sql.Statement statement = null ;
try {
statement = connection.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
stay = statement.execute(query.toString());
if (stay) {
performResultSet(statement.getResultSet());
} else {
createDatabaseReplay(statement.getUpdateCount());
}
} catch (SQLException e) {
performSQLException(connection, e);
}
}
/**
* этот метод вызывается если результат выполнения sql-запроса есть
* resultSet таблица
*
* @param resultSet
*/
public void performResultSet(ResultSet resultSet) {
this .resultSet=resultSet;
int columnCountOfResultSet = 0 ;
data.clear();
try {
rsmd = this .resultSet.getMetaData();
columnCountOfResultSet = rsmd.getColumnCount();
// создадим заголовки
headers = new Vector(columnCountOfResultSet);
for ( int columnInd = 0 ; columnInd < columnCountOfResultSet; columnInd++)
headers.add(rsmd.getColumnName(columnInd + 1 ));
if (getRowCount() == 0 ) {
int ind = 1 ;
Vector row = null ;
Object obj = null ;
while ( this .resultSet.next()) {
row = new Vector();
for ( int i = 1 ; i <= columnCountOfResultSet; i++) {
obj = this .resultSet.getObject(ind++);
row.add(obj);
}
ind = 1 ;
data.add(row);
row = null ;
}
}
setDataVector(data, this .headers);
this .fireTableDataChanged();
} catch (SQLException e) {
// pearent.errorTextArea.append(e.getMessage());
// e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
public void createDatabaseReplay( int numUpdates) {
headers = new Vector( 1 );
headers.add("Replay");
data.clear();
Vector row = new Vector( 1 );
row.add("Ok. " + numUpdates + " rows affected.");
data.add(row);
this .setDataVector(data, headers);
this .fireTableDataChanged();
}
/**
* этот метод обрабатывает ошибку и отражает результат работы в таблице
* (через модель)
*
* @param exp
*/
public void performSQLException(java.sql.Connection connection,
SQLException exp) {
SQLWarning sqlWarning;
SQLException sqlExp = exp;
String warning = null ;
Vector row = null ;
headers = new Vector( 1 );
headers.add("Error by query execution");
data.clear();
try {
for (sqlWarning = connection.getWarnings(); sqlWarning != null ; sqlWarning = sqlWarning
.getNextWarning()) {
row = new Vector();
warning = (warning == null ? "" : warning) + "WARNING: "
+ sqlWarning.getMessage() + ":"
+ sqlWarning.getSQLState() + "\n";
row.add(warning);
data.add(row);
}
// === обработка ошибок ===
while (sqlExp != null ) {
row = new Vector();
row.add(sqlExp.getMessage());
data.add(row);
sqlExp = exp.getNextException();
}
// === удалим старые сообщения ===
connection.clearWarnings();
} catch (SQLException e) {
e.printStackTrace();
}
this .setDataVector(data, headers);
this .fireTableDataChanged();
}
/**
* метод возвращает сформированный resultSet
* @return
*/
public ResultSet getResultSet(){
return resultSet;
}
public Vector getHeaders() {
return headers;
}
}
обрати внимание на метод performResultSet(). Там как раз и вытаскиваются данные из базы.
Это живой код. На основе него можеш создать свою таблицу
1.
JTable table= new JTable();
table.setModel( new DefaultReplyTableodel);