2014-05-09 7 views
0

다음은 jdbc.webshopProducts를 사용한 나의 쿼리입니다. Map입니다.Resultset은 많은 행이 있더라도 하나의 행을 결과로 제공합니다.

StringBuilder queryString=new StringBuilder(); 
      queryString.append(" select cpm.name,cpm.catalogueprice,cpm.catalogueno "); 
      queryString.append(" from customer_product_master cpm "); 
      queryString.append(" where cpm.catalogueno in (?) "); 
      stmt=con.prepareStatement(queryString.toString()); 
      stmt.setString(1,StringUtils.join(webshopProducts.keySet(),',')); 
rs=stmt.executeQuery(); 
      webshopProductList=new ArrayList<WebshopProductVO>(); 
      while(rs.next()){ 
       WebshopProductVO webshopProduct=new WebshopProductVO(); 
       webshopProduct.setArticleno(rs.getInt("catalogueno")); 
       webshopProduct.setName(rs.getString("name")); 
       webshopProduct.setPrice(rs.getFloat("catalogueprice")); 
       webshopProduct.setQuantity(webshopProducts.get(rs.getInt("catalogueno"))); 
       webshopProduct.setSum(rs.getFloat("catalogueprice")*webshopProducts.get(rs.getInt("catalogueno"))); 
       webshopProductList.add(webshopProduct); 
      } 

난 내가 직면하고 integers.The 문제의 쉼표로 분리 된 목록을 생성 (',', webshopProducts.keySet()) StringUtils.join 사용한 맵에서 하나 개 이상의 값이있는 경우에만 많은 WebshopProductVO가 있지만 WebshopProductList에 WebshopProductVO가 추가됩니다.

답변

1

사용중인 데이터베이스가 확실하지 않습니다. 하지만 너는 숫자가 필요할거야? 지나가는 값의 수와 같습니다.

where cpm.catalogueno in (?,?) 

당신은 문자열의 같은 번호를 설정해야한다 : -

당신이 절에 대한 두 개의 값이 있다고 가정, 그것은해야합니다.

stmt.setString(1,"somevalue"); 
    stmt.setString(2,"somevalue2"); 

두 개의 문장 모두에 키 집합에 루프를 써야합니다. 및 문자열 매개 변수를 설정