检索与 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
}
}
我有一种方法可以检索与列名对应的一些行,即 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
}
}