将表值从数据库提取并存储到dataValues

时间:2013-07-09 07:57:56

标签: java eclipse swing jtable

我想从数据库表中提取数据并显示在JTable中的表格中 以下是我想在数组dataValues [] []中添加数据库库中的数据的一些代码 在此i中存储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 );

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分: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]);
相关问题