如何在jtable中填充数据库并正确添加? [英] How do I populate my database in jtable and adding properly?

查看:66
本文介绍了如何在jtable中填充数据库并正确添加?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

最后,我成功填充了jtable中的数据。但是当我添加新数据时没有刷新。你可以帮帮我吗 ?谢谢..



  final   void  FillList() throws  ClassNotFoundException {
try {
Class.forName( org.sqlite.JDBC);
连接con = DriverManager.getConnection( jdbc:sqlite:lib / mydb.db );

String [] tableColumnsName = { name city date};
DefaultTableModel aModel =(DefaultTableModel)tablo.getModel();
aModel.setColumnIdentifiers(tableColumnsName);

语句stmt = con.createStatement();
ResultSet rs = stmt.executeQuery( 从mytable中选择名称,城市,日期) ;

java.sql.ResultSetMetaData rsmd = rs.getMetaData();
int colNo = rsmd.getColumnCount();
while (rs.next()){
Object [] objects = new 对象[colNo];
for int i = 0 ; i< colNo; i ++){
objects [i] = rs.getObject(i + 1 );
}
aModel.addRow(objects);
}
tablo.setModel(aModel);
con.close();
stmt.close();
rs.close();

} catch (ClassNotFoundException ex){
Logger.getLogger(buny。 class .getName())。log(Level.SEVERE,null,ex);
} catch (SQLException ex){
Logger.getLogger(buny。 class .getName())。log(Level.SEVERE,null,ex);
}
}





另外一个问题,这段代码是可行的,但我不知道同时查看表中的新数据。(我在重新启动应用程序时看到新数据)并且ide显示此错误消息:

SEVERE:null

java .sql.SQLException:[SQLITE_ERROR] SQL错误或缺少数据库(连接已关闭)

at org.sqlite.core.DB.newSQLException(DB.java:890)

org.sqlite.core.CoreStatement.internalClose(CoreStatement.java:109)

at org.sqlite.jdbc3.JDBC3Statement.close(JDBC3Statement.java:35)




  private   void  addActionPerformed(java.awt.event.ActionEvent evt){

try {
Class.forName( org.sqlite.JDBC);
连接con = DriverManager.getConnection( jdbc:sqlite:lib / mydb.db );
语句stmt = con.createStatement();
字符串查询= 插入mytable(名称,城市,日期)值(' + name.getText()+ ',' + city.getText()+ ',' + date.getText() + ');

stmt.executeQuery(Query);
stmt.close();
con.close();
FillList();

JOptionPane.showMessageDialog(null, OK ..);
} catch (ClassNotFoundException ex){
Logger.getLogger(buny。 class .getName())。log(Level.SEVERE,null,ex);
} catch (SQLException ex){
Logger.getLogger(buny。 class .getName())。log(Level.SEVERE,null,ex);
}

}

解决方案

检查:

java - 使用.db文件填充JTable - 堆栈溢出 [ ^ ]


< blockquote>你没有指定代码是如何工作的,但有一点可以引起注意的是你有两个while循环,你在结果集中前进

 ... 
while (rs.next()){
Object [] row = new 对象[colcount];
for int i = 1 ; i< = colcount; i ++){
row [i - 1 ] = rs.getObject(i);
}
tm.addRow(row);
}
while (rs.next()){ / * 这是需要的还是只是导致问题* /
}
jtable.setModel(tm) ;
...



另一件事是 jtable 未在此代码中定义或初始化。它可能是未初始化的吗?


Finally I success the populate a data in jtable. But no refresh when I was add new data. Could you help me ? Thanks..

final void FillList() throws ClassNotFoundException {
       try {
           Class.forName("org.sqlite.JDBC");
           Connection con = DriverManager.getConnection("jdbc:sqlite:lib/mydb.db");

           String[] tableColumnsName = {"name", "city","date"};
           DefaultTableModel aModel = (DefaultTableModel) tablo.getModel();
           aModel.setColumnIdentifiers(tableColumnsName);

           Statement stmt = con.createStatement();
           ResultSet rs = stmt.executeQuery("select name,city,date from mytable");

           java.sql.ResultSetMetaData rsmd = rs.getMetaData();
           int colNo = rsmd.getColumnCount();
           while (rs.next()) {
               Object[] objects = new Object[colNo];
               for (int i = 0; i < colNo; i++) {
                   objects[i] = rs.getObject(i + 1);
               }
               aModel.addRow(objects);
           }
           tablo.setModel(aModel);
           con.close();
           stmt.close();
           rs.close();

       } catch (ClassNotFoundException ex) {
           Logger.getLogger(buny.class.getName()).log(Level.SEVERE, null, ex);
       } catch (SQLException ex) {
           Logger.getLogger(buny.class.getName()).log(Level.SEVERE, null, ex);
       }
   }



And another problem, this code is work but I don't see new data in table same time.(I see new data when I was restart my app) And ide show this error msg :
SEVERE: null
java.sql.SQLException: [SQLITE_ERROR] SQL error or missing database (Connection is closed)
at org.sqlite.core.DB.newSQLException(DB.java:890)
at org.sqlite.core.CoreStatement.internalClose(CoreStatement.java:109)
at org.sqlite.jdbc3.JDBC3Statement.close(JDBC3Statement.java:35)


private void addActionPerformed(java.awt.event.ActionEvent evt) {

       try {
           Class.forName("org.sqlite.JDBC");
           Connection con = DriverManager.getConnection("jdbc:sqlite:lib/mydb.db");
           Statement stmt = con.createStatement();
           String Query = "insert into mytable (name,city,date) values ('" +name.getText() + "','" + city.getText() + "','" + date.getText() + "')";

           stmt.executeQuery(Query);
           stmt.close();
           con.close();
           FillList();

           JOptionPane.showMessageDialog(null, "OK..");
       } catch (ClassNotFoundException ex) {
           Logger.getLogger(buny.class.getName()).log(Level.SEVERE, null, ex);
       } catch (SQLException ex) {
           Logger.getLogger(buny.class.getName()).log(Level.SEVERE, null, ex);
       }

   }

解决方案

Check:
java - Populate JTable using .db file - Stack Overflow[^]


You didn't specify how the code isn't working but one thing that catches eye is that you have two while loops where you advance in the result set

...
            while (rs.next()) {
                Object[] row = new Object[colcount];
                for (int i = 1; i <= colcount; i++) {
                    row[i - 1] = rs.getObject(i);
                }
                tm.addRow(row);
            }
            while (rs.next()) { /* is this needed or just causing problems */
            }
            jtable.setModel(tm);
...


Another thing is that jtable is not defined nor initialized in this code. Could it be uninitialized?


这篇关于如何在jtable中填充数据库并正确添加?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆