仅显示最高值

时间:2015-08-06 23:50:00

标签: java sql arrays

我希望此函数在数组中显示最高值和索引。如果索引最高,它将检索sql中的所有值。但是当我运行这个程序时,它会显示很多值...如何解决?

  private void pick_highest_value_here_and_display(ArrayList<Double> value) throws Exception {
                 // TODO Auto-generated method stub
                 double aa[]=value.stream().mapToDouble(v -> v.doubleValue()).toArray(); 
                 double highest=aa[0]; 
                 System.out.println(highest); // display value in aa[0]
                  for(int i=1;i<aa.length;i++)
                 {
                     if(aa[i]>highest)
                     {
                         highest=aa[i];

                         System.out.println(highest); //print the highest value only
                         System.out.println(i);

                         String sql ="Select * from placeseen where ID =?";
                         DatabaseConnection db = new DatabaseConnection();
                         Connection  conn =db.getConnection();
                         PreparedStatement  ps = conn.prepareStatement(sql);
                         ps.setDouble(1, i+1); 
                         ResultSet rs = ps.executeQuery();
                         if (rs.next()) 
                         {  
                          String aaa=rs.getString("place1");  
                          String bbb=rs.getString("place2");
                          String cc=rs.getString("place3");
                          String dd=rs.getString("place4");
                          String ee=rs.getString("place5");
                          String ff=rs.getString("place6");
                          String gg=rs.getString("place7");
                          String hh=rs.getString("place8");
                          String iii=rs.getString("place9");
                          String jj=rs.getString("place10");
                          String kk=rs.getString("place11");
                          String ll=rs.getString("place12");
                          String mm=rs.getString("place13");
                          String nn=rs.getString("place14");
                          String oo=rs.getString("place15");
                          String pp=rs.getString("budget");
                          Tourism to =new Tourism();
                          to.setPlace1(aaa);
                          to.setPlace2(bbb);
                          to.setPlace3(cc);
                          to.setPlace4(dd);
                          to.setPlace5(ee);
                          to.setPlace6(ff);
                          to.setPlace7(gg);
                          to.setPlace8(hh);
                          to.setPlace9(iii);
                          to.setPlace10(jj);
                          to.setPlace11(kk);
                          to.setPlace12(ll);
                          to.setPlace13(mm);
                          to.setPlace14(nn);
                          to.setPlace15(oo);
                          to.setBudget(pp);
                          DispDay dc=new DispDay();
                          dc.setVisible(true);
                         }
                         ps.close();
                         rs.close();
                         conn.close();

                 }
                     else if(highest==aa[0])
                     {
                         String sql ="Select * from placeseen where ID =1";
                         DatabaseConnection db = new DatabaseConnection();
                         Connection  conn =db.getConnection();
                         PreparedStatement  ps = conn.prepareStatement(sql);

                         ResultSet rs = ps.executeQuery();
                         if (rs.next()) 
                         {  
                          String aaa=rs.getString("place1");  
                          String bbb=rs.getString("place2");
                          String cc=rs.getString("place3");
                          String dd=rs.getString("place4");
                          String ee=rs.getString("place5");
                          String ff=rs.getString("place6");
                          String gg=rs.getString("place7");
                          String hh=rs.getString("place8");
                          String iii=rs.getString("place9");
                          String jj=rs.getString("place10");
                          String kk=rs.getString("place11");
                          String ll=rs.getString("place12");
                          String mm=rs.getString("place13");
                          String nn=rs.getString("place14");
                          String oo=rs.getString("place15");
                         String pp=rs.getString("budget");
                          Tourism to =new Tourism();
                          to.setPlace1(aaa);
                          to.setPlace2(bbb);
                          to.setPlace3(cc);
                          to.setPlace4(dd);
                          to.setPlace5(ee);
                          to.setPlace6(ff);
                          to.setPlace7(gg);
                          to.setPlace8(hh);
                          to.setPlace9(iii);
                          to.setPlace10(jj);
                          to.setPlace11(kk);
                          to.setPlace12(ll);
                          to.setPlace13(mm);
                          to.setPlace14(nn);
                          to.setPlace15(oo);
                          to.setBudget(pp);
                          DispDay dc=new DispDay();
                          dc.setVisible(true);
                         }
                         ps.close();
                         rs.close();
                         conn.close();
                     }
                 }

2 个答案:

答案 0 :(得分:2)

使用MAX

更改您的方法,并使用SQL MAX function。像,

String sql = "SELECT * FROM placeseen WHERE budget = ("
    + "SELECT MAX(budget) FROM placeseen)";

然后你可以使用像

这样的东西
int id = rs.getInt("id");
float budget = rs.getFloat("budget");

我建议限制列(如果你只想要两个),如

String sql = "SELECT id, budget FROM placeseen WHERE budget = ("
    + "SELECT MAX(budget) FROM placeseen)";

答案 1 :(得分:0)

为什么不使用'set up the output workbook Set OutBook = ThisWorkbook 'Worksheets.Add Set OutSheet = OutBook.Sheets.Add OutSheet.Name = "Repair Summary" Set OutSheet = OutBook.Sheets(1) 'loop through all files For FileIdx = 1 To TargetFiles.SelectedItems.Count 'open the file and assign the workbook & worksheet Set DataBook = Workbooks.Open(TargetFiles.SelectedItems(FileIdx)) Set DataSheet = DataBook.Sheets("Repair Summary by Location") 'identify row/column boundaries LastDataRow = DataSheet.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row LastDataCol = DataSheet.Cells.Find("*", SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column 'if this is the first go-round, include the header If FileIdx = 1 Then Set DataRng = Range(DataSheet.Cells(HeaderRow, 1), DataSheet.Cells(LastDataRow, LastDataCol)) Set OutRng = Range(OutSheet.Cells(HeaderRow, 1), OutSheet.Cells(LastDataRow, LastDataCol)) 'if this is NOT the first go-round, then skip the header Else Set DataRng = Range(DataSheet.Cells(HeaderRow, 1), DataSheet.Cells(LastDataRow, LastDataCol)) Set OutRng = Range(OutSheet.Cells(LastOutRow + 2, 1), OutSheet.Cells(LastOutRow + 2 + LastDataRow, LastDataCol)) End If 'copy the data to the outbook DataRng.Copy OutRng 'close the data book without saving DataBook.Close False 'update the last outbook row LastOutRow = OutSheet.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row Next FileIdx ? 将for (int i = 0; i < array.lenght; i++)存储在变量中,并将该索引中的实际array[i]存储在另一个变量中。然后,当你更多地循环它:int时,将新索引号和新的最大整数存储在它们的相应变量中。