我现在的情况是这样的:
我建立了public class TBmodel extends AbstractTableModel 类
然后通过实例化TBmodel tb,JTable jtTable = new JTable(tb);
然后在TBmodel中实例了数据库的连接,取得数据后保存在ArrayList data;当中
在主界面上可以显示出数据库的内容!
我现在有一个查询功能,通过输入一个关键字,然后点击“查询”按钮,这时jtTable上的数据会更新!
另外还有一个删除按钮,如果在查询完之后,点击“删除”,则会将所查询出来的数据全部删除掉!注意:这里我是通过执行SQL语句完成的,也就是说数据库里也是一样的删除了!我现在想要另外一个功能:就是当我选择表格当中的某列,或者某几列时,点击“选择删除”(这是另外一个按钮)时,数据库会将我所选的行删除掉!而且表格会自动更新(更新的结果就是刚刚删除的数据不再显示)!可是我通过这种办法遇到一点问题:
int[] rowIndex = jt_data.getSelectedRows();//将选中的那几行的索引值放入到一个数组当中
String[] rowId = new String[rowIndex.length];
for(int i=0; i<rowIndex.length; i++) {
     rowId[i]= jt_data.getValueAt(rowIndex[i], 0).toString();//根据每行的索引值得到对应的第1列数据
}然后我将这个rowId数组传入到另外一个方法用于生成SQL删除语句,当然生成的也是一个字符串数组,
运行的结果是,第一次不论你选择多少行,它都可以正确的删除掉对应的行!
但当你再选择行进行删除时,系统删除掉的数据却不是你所选择的数据!
我通过查找发现:jt_data.getValueAt(rowIndex[i], 0).toString();这个方法得到的第1列数据,还是我第一次选择时的数据,也就是说这个数据根本就没有更新,所以再第二次选择删除时,就出现删除了不对应的数据!求各位高人给个方法,看能不能解决掉!

解决方案 »

  1.   

    是不是太多了,大家不愿意看呀!其实重点就是后面一段!我通过查找发现:jt_data.getValueAt(rowIndex[i], 0).toString();这个方法得到的第1列数据,还是我第一次选择时的数据,也就是说这个数据根本就没有更新,所以再第二次选择删除时,就出现删除了不对应的数据!
      

  2.   

    for(int i=0; i <rowIndex.length; i++) { 这里试下从最后一行开始删除。
      

  3.   

    我试过,不过会报错,好像是数组越界吧!
    我是这样写的
    for(int i=rowIndex.length-1; i<0; i--) {}不知道对不对!
      

  4.   

    个人认为可能出现的问题是:你数据库删除数据时本地数据并没有更新清保持jt_data和数据库数据的同步
      

  5.   

    我是想删除行,
    请问楼上的,怎么保持 jt_data和数据库数据的同步?
      

  6.   

    通过3楼及5楼的提示,问题解决了!非常感谢!散分!
    问题解决如下:
    jt_data.getValueAt(rowIndex[i], 0).toString() 此方法不变将得到的数组通过for循环从最后一行进行删除,就不会出现行号不对应的问题了!