DefaultTableModelクラスを使用してResultSetデータをJTableに配置しようとしています。解決策として、私はStackOverflowの上で解決策を見つけたが、ビット(ここでは実際には関係ありません)、それを修正:データが照会されてもDefaultTableModelが空です
public static DefaultTableModel buildTableModel(ResultSet rs) {
try {
ResultSetMetaData metaData = rs.getMetaData();
Vector<String> columnNames = new Vector<String>();
int columnCount = metaData.getColumnCount();
for (int column = 1; column <= columnCount;++column) {
columnNames.add(metaData.getColumnName(column));
}
Vector<Vector<Object>> data = new Vector<Vector<Object>>();
while (rs.next()) {
Vector<Object> vector = new Vector<Object>();
for (int columnIndex = 1; columnIndex <= columnCount;++columnIndex) {
vector.add(rs.getObject(columnIndex));
}
data.add(vector);
}
return new DefaultTableModel(data, columnNames);
} catch(SQLException e) {
e.printStackTrace();
return new DefaultTableModel(new Vector<>(), new Vector<>());
}
}
私はこのコードをデバッグしている間、私はそれを見ることができた:
- のResultSet
rs
はデータを持っています、 ColumnNames
が移入され、- 行カウントがゼロ
- であり、私は問題がこのライン
vector.add(rs.getObject(columnIndex));
だと思います3210getObject()
は既にデータを返していないので、私のベクトルが空になっているようです。
誰かが私にこれを手伝ったり問題の原因を説明したりできますか?私が生成したDefaultTableModelをJTableにバインドすると、それは空です(データは表示されません)。
'DefaultTableModel'にはメソッドが存在すると行がありませんか? –
はい、行数はゼロ@ dev-nullです。 – CodeShark
コードは合理的に見えます。ループが期待通りに実行されることを確認するには、デバッグコードを追加する必要があります。行数がゼロの場合、ResultSetが空であることがわかります。 – camickr