通过Jtable将记录修改为数据库

时间:2012-02-27 18:30:11

标签: java sql swing jtable resultset

我使用Netbeans 7.1创建了一个Jtable。 该表创建了一个默认模型,如下所示

table.setModel(new javax.swing.table.DefaultTableModel(
        new Object [][] {
            {null, null, null, null},
            {null, null, null, null},
            {null, null, null, null},
            {null, null, null, null}
        },
        new String [] {
            "Title 1", "Title 2", "Title 3", "Title 4"
        }
    ));

我还添加了以下代码行来填充Sqlite数据库中的数据。

public void tabl()
{
  try
  {
    stmt=conn.createStatement();
    String sql2="SELECT * FROM students";
    rs=stmt.executeQuery(sql2);
    int n=0;
    while(rs.next())
    {  

      table.setValueAt(rs.getString(1),n,0);
      table.setValueAt(rs.getString(2),n,1);
      table.setValueAt(rs.getString(3),n,2);
      table.setValueAt(rs.getString(4),n,3);
      n++;
    }
  }
  catch(SQLException e)
  {

  }
}

我的测验是如何使JTable能够使用默认模型更新和删除记录....我是表模型的新手。

2 个答案:

答案 0 :(得分:1)

DefaultTableModel dmReset = (DefaultTableModel) table.getModel();
try {
    stmt=conn.createStatement();
    String sql2="SELECT * FROM students";
    rs=stmt.executeQuery(sql2);
    while (rs.next()) {
          Vector v = new Vector();
          v.add(rs.getString(1));
          v.add(rs.getString(2));
          v.add(rs.getString(3));
          v.add(rs.getString(4));
          dmReset.addRow(v);
          }
    } catch (Exception e) {
          System.err.println(e.toString());
    }

注意:在rs.getXXX()方法中使用完整列标题而不是列索引。 有关TableModel的更多详细信息,请参阅this document.

如果你想获得其他类型的数据,如Float,int等......可以添加一个开关盒, 你可以找到例子here

答案 1 :(得分:0)

你必须像这样创建声明

conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
                    ResultSet.CONCUR_UPDATABLE);

并注意select * FROM table;始终返回只读结果集。而不是查询应该选择column1,columnn FROM table;