检索与 java 中的列值对应的单行

To retrieve a single row corresponding to a column value in java

我有一种方法可以检索与列名对应的一些行,即 beam_current.Now 对应于 beam_current 我只希望有一行 displayed.But 正确现在有时会检索对应于 beam_current 值的多行。

我显示的输出是-

此处对应于beam_current 50,即将出现两行,用玉米丝显示color.Now我希望这两行中的任何一个dispalyed.How都可以做到这一点。

我在 java class 中的代码是-

public List < Comaprision > refarray_vac1(String date) throws SQLException, ParseException {

  st_jsp.clear();

  List < Double > slist_user = new ArrayList < Double > (map1.keySet());
  String s_user = StringUtils.join(slist_user, ',');

  try {
    con = getConnection();
    stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);

    String vs1 = "select b.logtime, b.beam_current, b.beam_energy,case " +
      "when a.st2_vs2_bag1_onoff=0 then c.st2_vs2_bag1_rb ELSE 0 END as st2_vs2_bag1_rb," +
      "CASE when a.st2_vs2_bag2_onoff=0  then c.st2_vs2_bag2_rb else '0' END as st2_vs2_bag2_rb," +
      "CASE when a.st2_vs2_bag3_onoff=0  then c.st2_vs2_bag3_rb else '0' END as st2_vs2_bag3_rb," +
      "CASE when a.st2_vs2_bag4_onoff=0  then c.st2_vs2_bag4_rb else '0' END as st2_vs2_bag4_rb," +
      "CASE when a.st2_vs2_bag5_onoff=0  then c.st2_vs2_bag5_rb else '0' END as st2_vs2_bag5_rb," +
      "CASE when a.st2_vs2_bag6_onoff=0  then c.st2_vs2_bag6_rb else '0' END as st2_vs2_bag6_rb," +
      "CASE when a.st2_vs2_bag7_onoff=0  then c.st2_vs2_bag7_rb else '0' END as st2_vs2_bag7_rb," +
      "CASE when a.st2_vs2_bag8_onoff=0  then c.st2_vs2_bag8_rb else '0' END as st2_vs2_bag8_rb," +
      "CASE when a.st2_vs2_bag9_onoff=0  then c.st2_vs2_bag9_rb else '0' END as st2_vs2_bag9_rb " +
      "from INDUS2_BDS.dbo.DCCT b INNER JOIN(INDUS2_VACUUM.dbo.main_vacuum_analog c inner join INDUS2_VACUUM.dbo.main_vacuum_status a on c.logtime=a.logtime)" +
      "ON a.LOGTIME = b.LOGTIME and (b.beam_current like '%9.96' or b.beam_current like '%9.97' or  b.beam_current like '%9.98' or  b.beam_current like '%9.99'  or  b.beam_current like '%0' or b.beam_current like '%_0.01' or  b.beam_current like '%_0.02' or  b.beam_current like '%_0.03' or  b.beam_current like '%_0.04' or  b.beam_current like '%_0.05' or  b.beam_current like '%_0.06')" +
      "and b.logtime between '" + date + " 00:00:00' and '" + date + " 23:59:59' and b.beam_current in(" + s_user + ") and ( b.beam_energy between '550' and '551' ) order by b.beam_current ";

    System.out.println("vs1: " + vs1);
    stmt.executeQuery(vs1);
    rs = stmt.getResultSet();


    while (rs.next()) {
      Comaprision ref = new Comaprision();

      ref.setLogtime(rs.getString(1));
      ref.setBeam_current(rs.getString(2));
      ref.setBeam_energy(rs.getString(3));
      ref.setSt2_vs2_bag1_rb(rs.getString(4));
      ref.setSt2_vs2_bag2_rb(rs.getString(5));
      ref.setSt2_vs2_bag3_rb(rs.getString(6));
      ref.setSt2_vs2_bag4_rb(rs.getString(7));
      ref.setSt2_vs2_bag5_rb(rs.getString(8));
      ref.setSt2_vs2_bag6_rb(rs.getString(9));
      ref.setSt2_vs2_bag7_rb(rs.getString(10));
      ref.setSt2_vs2_bag8_rb(rs.getString(11));
      ref.setSt2_vs2_bag9_rb(rs.getString(12));
      st_jsp.add(ref);

    }

  } catch (Exception e) {
    System.out.println("\nException in refarray_vac1 " + e);
  }

  return st_jsp;
}

看起来像:

    String previousBeam = null;
    while (rs.next()) {
        String currentBeam = rs.getString(2);
        if (!currentBeam.equals(previousBeam)) {
            previousBeam = currentBeam;
            Comaprision ref = new Comaprision();
            ref.setLogtime(rs.getString(1));
            // ...
            ref.setSt2_vs2_bag9_rb(rs.getString(12));
            stJsp.add(ref);
        }
    }

您可以使用哈希集并向其中添加元素,并且只显示不在哈希集中的元素:

HashSet set = new HashSet<String>();

while(rs.next())
{
    if(!set.add(rs.getString(2))) // 2 here corresponds to the index of beam_current
    {
         //you continue and do w/e
    }
}