简体   繁体   English

如何在Java中的SQL查询中使用map.KeySet()

[英]How can I use map.KeySet() in sql query in java

I have a LinkedHahMap map1 whcih holds key as my beam_current which is of double type and value as my logtime which is of string type. 我有一个LinkedHahMap map1,它的是我的beam_current ,它是双精度类型,值是我的logtime,它是字符串类型。 Now I want to use this map1.keySet() in my sql query as- 现在,我想在我的SQL查询中使用此map1.keySet()-

Set<Double> arr=    map1.keySet();
String vs2="select b.beam_current, b.beam_energy where
          b.logtime between '"+first+"' and '"+last+"' and b.beam_current in('"+arr+"')";

But when I use arr which holds value of map1 key ,**nothing is being displayed.**Can't we use map1.KeySet() method in sql query or I'm implemting it in wrong way?? 但是当我使用保存map1 key值的 arr时,**什么都没有显示。**我们不能在sql查询中使用map1.KeySet()方法吗?还是以错误的方式暗示了它?

First convert your map keys into comma separated string and then use it in your query. 首先将地图键转换为逗号分隔的字符串,然后在查询中使用它。

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


      String vs2="select b.beam_current, b.beam_energy where
                  b.logtime between '"+first+"' and '"+last+"' and    
                  b.beam_current in('"+s+"')";

If you don't want to depend on external libs (like StringUtils.join), you can do it manually: 如果您不想依赖外部库(例如StringUtils.join),则可以手动执行:

public static void main(String[] args) {
    HashMap<Double, String> map1 = new HashMap<Double, String>();
    map1.put(1.5, "");
    map1.put(2.5, "");
    String first = "first";
    String last = "last";

    String query = buildQuery(map1, first, last);
    System.out.println(query);
}

private static String buildQuery(HashMap<Double, String> map1, String first, String last) {
    StringBuilder sb = new StringBuilder();
    sb.append("select b.beam_current, b.beam_energy where b.logtime between '");
    sb.append(first);
    sb.append("' and '");
    sb.append(last);
    sb.append("' and b.beam_current in (");
    String separator = "";
    for (Double val : map1.keySet()) {
        sb.append(separator);
        sb.append(val);
        separator = ", ";
    }
    sb.append(")");
    return sb.toString();
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM