我继承了JTable类,并写了一个更新表中的数据的方法,该方法的思路如下:
我先用tableModel删除一行,再在数据库中查找一条数据添加到刚才删除的那一行上。来实现JTable表中的数据的修改。可是当我先显示了一个JOptionPane后,再调用上面的方法可以实现刷新,但是如何没有JOpentionPane,就不能刷新JTable中的数据,这是怎么回事。我用了validate方法和fireTableDataChanged都不行。方法如下
JOptionPane.showMessageDialog(null,"修改成功","提示",JOptionPane.OK_OPTION);
table.updataTable(scp.tableNum,scp.num,scp.button,databaseName);
//tableNum是JTable中的第几行数据 num是数据库中的一个ID号,databaseName是要更新的那个数据库名称
public void updataTable(int tableNum,int num,JButton button,String databaseName){
dm.removeRow(tableNum); //System.out.println("行号" + tableNum+"数据库号"+num);
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try{
String dbURL ="jdbc:odbc:Driver={MicroSoft Access Driver (*.mdb)};DBQ=d:/exam.mdb";
conn = DriverManager.getConnection(dbURL);//创建连接对象
st = conn.createStatement();
String sql = "select * from "+databaseName+" where id = "+num;
rs = st.executeQuery(sql);
while(rs.next()){
dm.insertRow(tableNum, new Object[]{rs.getInt("id"),rs.getString("content")
,rs.getString("answer"),rs.getString("type"),rs.getString("quotiety")
});
this.setRowSelectionInterval(tableNum, tableNum);
button.setEnabled(false);
}
}catch(SQLException e){
System.out.println("数据库连接失败!");
}finally{
try{
if(rs!=null){
rs.close();
}
if(st!=null){
st.close();
}
if(conn!=null){
conn.close();
}
}catch(SQLException e){
e.printStackTrace();
}
}
// dm.fireTableDataChanged();
}
我先用tableModel删除一行,再在数据库中查找一条数据添加到刚才删除的那一行上。来实现JTable表中的数据的修改。可是当我先显示了一个JOptionPane后,再调用上面的方法可以实现刷新,但是如何没有JOpentionPane,就不能刷新JTable中的数据,这是怎么回事。我用了validate方法和fireTableDataChanged都不行。方法如下
JOptionPane.showMessageDialog(null,"修改成功","提示",JOptionPane.OK_OPTION);
table.updataTable(scp.tableNum,scp.num,scp.button,databaseName);
//tableNum是JTable中的第几行数据 num是数据库中的一个ID号,databaseName是要更新的那个数据库名称
public void updataTable(int tableNum,int num,JButton button,String databaseName){
dm.removeRow(tableNum); //System.out.println("行号" + tableNum+"数据库号"+num);
Connection conn = null;
Statement st = null;
ResultSet rs = null;
try{
String dbURL ="jdbc:odbc:Driver={MicroSoft Access Driver (*.mdb)};DBQ=d:/exam.mdb";
conn = DriverManager.getConnection(dbURL);//创建连接对象
st = conn.createStatement();
String sql = "select * from "+databaseName+" where id = "+num;
rs = st.executeQuery(sql);
while(rs.next()){
dm.insertRow(tableNum, new Object[]{rs.getInt("id"),rs.getString("content")
,rs.getString("answer"),rs.getString("type"),rs.getString("quotiety")
});
this.setRowSelectionInterval(tableNum, tableNum);
button.setEnabled(false);
}
}catch(SQLException e){
System.out.println("数据库连接失败!");
}finally{
try{
if(rs!=null){
rs.close();
}
if(st!=null){
st.close();
}
if(conn!=null){
conn.close();
}
}catch(SQLException e){
e.printStackTrace();
}
}
// dm.fireTableDataChanged();
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货