Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过Jtable将记录修改到数据库中_Java_Sql_Swing_Jtable_Resultset - Fatal编程技术网

Java 通过Jtable将记录修改到数据库中

Java 通过Jtable将记录修改到数据库中,java,sql,swing,jtable,resultset,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},

我使用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
能够使用默认模型更新和删除记录。我对表格模型不熟悉。

您必须创建这样的语句

conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
                    ResultSet.CONCUR_UPDATABLE);
还要注意,从表中选择*;始终返回只读结果集。相反,查询应该是从表中选择column1、columnn

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
的更多详细信息,请参阅

如果您想获取其他类型的数据,如Float、int等。。。可随此添加一个开关盒,
您可以找到示例。

@Xcoder:write
rs.getXXX(“列标题”)
。它将删除由于数据库表或视图操作而导致的进一步错误。@peter我如何使用我刚刚创建的按钮更新更改。?