【问题标题】:JTable not being populated from resultset with DButils没有使用 DButils 从结果集中填充 JTable
【发布时间】:2014-07-29 02:01:36
【问题描述】:

我一直在尝试了解如何使用我的结果集中的数据填充 jtable,并发现使用 DBUtils 可能是最简单的方法,但不幸的是它根本不适合我。程序运行,但 jtable 仍然为空。我不明白我哪里出错了。我有 import net.proteanit.sql.DbUtils;在顶部导入并在类路径中添加 jar。这是我的代码:

private void jPanel3FocusGained(java.awt.event.FocusEvent evt) {                                    

    // TODO add your handling code here:

    // JDBC driver name and database URL
String JDBC_DRIVER = "com.mysql.jdbc.Driver";  
String DB_URL = "jdbc:mysql://localhost/new";

//  Database credentials
String USER = "root";
String PASS = "";

Connection conn = null;
PreparedStatement stmt = null;
try{
  //STEP 2: Register JDBC driver
   Class.forName("com.mysql.jdbc.Driver");

  //STEP 3: Open a connection
  System.out.println("Connecting to database...");
  conn = DriverManager.getConnection(DB_URL,USER,PASS);

  //STEP 4: Execute a query
  System.out.println("Creating statement...");
  String sql;
  sql = "SELECT * FROM user";
  stmt = conn.prepareStatement(sql);
  //Bind values into the parameters.
  ResultSet rs = stmt.executeQuery();

  jTable1.setModel(DbUtils.resultSetToTableModel(rs));
 }
    catch (SQLException ex) {

 JOptionPane.showMessageDialog(null, ex);
 }
catch(Exception e){
  //Handle errors for Class.forName
  e.printStackTrace();
 }


finally {

try {

  stmt.close();
  conn.close();

} 
catch (SQLException e) { /* ignore */

}



try {

    conn.close();

} catch (SQLException e) { /* ignore */

 }
}
 }                              

【问题讨论】:

  • 1) 为了尽快获得更好的帮助,请发布MCVE(最小完整且可验证的示例)。 2) 对代码块使用一致且符合逻辑的缩进。代码的缩进是为了帮助人们理解程序流程。
  • 当我得到它的工作。显然代码没有任何问题,但 Action 事件 FocusGained 由于某种原因无法正常工作。使用按钮按下动作事件并且相同的代码起作用。奇怪。

标签: java swing jtable resultset


【解决方案1】:

我被困在同一点上, 所以我使用了“向量”

我们都知道在考虑 Vectors 的实现时使用 Arraylist 是更好的方法。但是在使用 jTables 时,默认情况下,您有一些简单的方法来管理数据流并填充到 jTable 中将简化编码。 因此,如果您像我一样对这些场景的编码经验较少,我建议您使用 Vectors

只需要导入这个和一些代码。

导入 java.util.Vector;

要了解如何使用 Vectors 来处理 ResultSet,请参阅 this

【讨论】:

  • "检查你把 Class.forName()" 放在哪里了?你能说得更具体点吗?
  • OP 声明代码运行良好。检查 cmets。
  • danthaaa ? 我认为 OP 代码正在运行,请参阅问题上的 cmets
  • 是的,它通过使用“jTable1.setModel(DbUtils.resultSetToTableModel(rs));”工作但是如果使用 DBUtils 类,你将一无所获,所以我发布这篇文章是为了了解像我这样的初学者的真实场景。 :)
猜你喜欢
  • 2016-04-03
  • 2014-04-06
  • 2012-12-26
  • 1970-01-01
  • 2011-01-24
  • 1970-01-01
  • 2014-09-09
  • 2012-01-27
  • 1970-01-01
相关资源
最近更新 更多