【发布时间】:2012-05-24 03:04:53
【问题描述】:
我用谷歌搜索了一整天,没有运气。按下 OK 按钮后,我调用 getnPrintAllData() 方法。所以代码是:
public class DatabaseSQLiteConnection {
Connection conn = null;
PreparedStatement statement = null;
ResultSet res = null;
public DatabaseSQLiteConnection(){
try{
Class.forName("org.sqlite.JDBC");
conn = DriverManager.getConnection("jdbc:sqlite:test.sqlite");
statement = conn.prepareStatement("SELECT * from product_info;");
}
catch(Exception e){
e.printStackTrace();
}
}
public void getnPrintAllData(){
String name, supplier, id;
DefaultTableModel dtm = new DefaultTableModel();
Window gui = new Window(); //My JPanel class
try{
res = statement.executeQuery();
testResultSet(res);
ResultSetMetaData meta = res.getMetaData();
int numberOfColumns = meta.getColumnCount();
while (res.next())
{
Object [] rowData = new Object[numberOfColumns];
for (int i = 0; i < rowData.length; ++i)
{
rowData[i] = res.getObject(i+1);
}
dtm.addRow(rowData);
}
gui.jTable1.setModel(dtm);
dtm.fireTableDataChanged();
//////////////////////////
}
catch(Exception e){
System.err.println(e);
e.printStackTrace();
}
finally{
try{
res.close();
statement.close();
conn.close();
}
catch(Exception e){
e.printStackTrace();
}
}
}
public void testResultSet(ResultSet res){
try{
while(res.next()){
System.out.println("Product ID: "+ res.getInt("product_id"));
System.out.println("Product name: "+ res.getString("product_name"));
System.out.println("Supplier: "+ res.getString("supplier"));
}
}
catch(Exception e){
e.printStackTrace();
}
}
}
我的testResultSet() 方法工作正常。
现在,如何更改我的代码以使其正常工作,或者从 ResultSet 制作 DefaultTableModel 的最简单代码是什么?
提前致谢。
编辑:我收到java.lang.IllegalStateException: SQLite JDBC: inconsistent internal state 错误。
【问题讨论】:
-
是的,从 ResultSet 填充 DefaultTableModel。
-
不是推荐的方法(不使用 SwingWorker)但应该给你一个想法java2s.com/Code/Java/Swing-JFC/…
-
从哪一行抛出异常?
-
@mprabhat - 看起来不错 (
how-to-fill-data-in-a-jtable-with-database) 但您能否在此处编辑该代码并发表评论,以便我可以在我的项目中使用它?我实际上没有得到那个代码。
标签: java swing sqlite jtable defaulttablemodel