-2

我想从数据库表中提取数据并从 in 中显示到表中JTable
这是一些代码,我想将数据库库中的数据添加到数组dataValues [] [] 中,我将值存储在dataValues [][]静态中,但我想将值存储在dataValues[][]数据库表中。

DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); 

Connection connection = DriverManager.getConnection(url, username, password); 
Statement statement = connection.createStatement(); 
String query = "select command_name, omc_name, to_module, start_time, end_time, status, priority, cmd_id from sync_task_table"; 

ResultSet resultset = statement.executeQuery(query); 

dm=new DefaultTableModel(); 

String columnNames[] = { "Column 1", "Column 2", "Column 3" }; 

// Create some data 
String dataValues[][] = { 
    { "12", "234", "67" }, 
    { "-123", "43", "853" }, 
    { "93", "89.2", "109" }, 
    { "279", "9033", "3092" } 
}; 

// Create a new table instance 
table = new JTable( dataValues, columnNames ); 

// Add the table to a scrolling pane 
scrollPane = new JScrollPane( table );
4

2 回答 2

3
  • 阅读 Oracle 教程如何使用表
  • 将 DefaultTableModel 重置为 null,在执行来自 JDBC 的新对象之前,将其添加到 DefaultTableModel,使用(还有一些其他方法,您可以开始使用)model.setRowCount(0);
  • 创建 DefaultTableModel,JTable 作为局部变量,重新使用这些变量,不要创建新的那些对象,然后需要删除 uselles 对象并添加一个新对象到 Swing GUI
  • 覆盖 getColumnClass,它对于 JTables 视图了解存储在 DefaultTableModel 中的数据类型非常重要
  • 创建(我假设没有另一个列结构,如果是,则多重播放此变量) ColumnModel 作为局部变量
  • 不要重新发明轮子,搜索ResultSetTableModel,或者更好的TableFromDatabase
于 2013-07-09T08:08:07.063 回答
3

首先,您应该以首选的 JDBC 方式注册驱动程序

 Class.forName("oracle.jdbc.driver.OracleDriver");
 // instead of
 DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()); 

现在回答你的问题。

通过以下方式初始化 dataValues:

 String columnNames[] = { "Column 1", "Column 2", "Column 3" }; 
 List<Object[]> dataValueList = new ArrayList(); 

 while(resultset.next()){
    Object[] nextRow = new Object[columnNames.length];
    for(int col = 0; col < columnNames.length; col++){
        String colName = columnNames[col]
        Object colValue = resultset.getObject(colName);
        // do type conversion here - e.g. sql type to string
        nextRow[col] = colValue;
    }
    dataValueList.add(nextRow);
 }

 Object[][] dataValues = (Object[][]) dataValueList.toArray(new Object[dataValueList
            .size()][columnNames.length]);
于 2013-07-09T08:18:55.263 回答