如何从JTable中删除重复的行?

时间:2013-01-15 09:30:03

标签: java swing jtable

在本课程中,我试图仅保留JTable中每个值中的一个。数据来自数据库。我不需要重复数据。

public JTable getHeute(){

            DBconnect verbinden = new DBconnect();
            verbinden.erstelleVerbindung();

            JTable Habwesend=new JTable();
            Habwesend.setBounds(10, 30, 290, 400);
            Habwesend.setEnabled(false);
            DefaultTableModel dm=new DefaultTableModel();

            try {
            ResultSet rs= verbinden.sqlStatement.executeQuery("select MA_ID from AB_Spanne where(Date() >= Start and Date() <= Ende)");
            ResultSetMetaData rsmd=rs.getMetaData();
            //Coding to get columns-
            int cols=rsmd.getColumnCount();
            String c[]=new String[cols];
            for(int i=0;i<cols;i++){
                c[i]=rsmd.getColumnName(i+1);
                for (int k = 0; k < c.length; k++) {
                    dm.addColumn(c[k]);
                }



            }

            Object row[]=new Object[cols];
            while(rs.next()){
                for(int i=0;i<cols;i++){
                        row[i]=rs.getString(i+1);
                    }
                dm.addRow(row);
            }


            Habwesend.setModel(dm);
            verbinden.schliesseVerbindung();


    }

2 个答案:

答案 0 :(得分:1)

将您的查询更改为:

"SELECT DISTINCT MA_ID from AB_Spanne where(Date() >= Start and Date() <= Ende)"

你可以在java中这样做(不推荐和无法使用):

//UNTESTED CODE
List<Object> Objectlist = new List<Object>();
// ...
Object row[]=new Object[cols];

while(rs.next()){

   for(int i=0;i<cols;i++){
      row[i]=rs.getString(i+1);
   }

   if !(Objectlist.Contains(row)){
      dm.addRow(row);
   }
}

//我想为了使包含的方法起作用,您可能需要创建自己的对象,在其中覆盖相等/比较方法。

答案 1 :(得分:0)

使用List而不是Set,并保持其余代码相同。那是你的java解决方案,对于白衣:

// Set dm = new HashSet();
  Object row[]=new Object[cols];
            while(rs.next()){
                for(int i=0;i<cols;i++){
                        row[i]=rs.getString(i+1);
                    }
                dm.addRow(row);
            }
           Habwesend.setModel(dm);
            verbinden.schliesseVerbindung();