1

このクラスでは、各値を 1 つだけ保持しようとしてい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();


    }
4

2 に答える 2

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);
   }
}

// contains メソッドを機能させるには、等値/比較メソッドをオーバーライドする独自のオブジェクトを作成する必要があると思います。

于 2013-01-15T09:38:56.440 に答える
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();
于 2013-01-15T10:57:53.703 に答える