2016-06-21 2 views
0

안에 있습니다. 다른 데이터베이스에서 동일한 제품 모델을 가진 레코드가 발견 될 때마다 로컬 데이터베이스의 기존 데이터를 새로운 세부 정보로 업데이트하는 Java 프로그램을 작성하고 있습니다. 레코드가 없으면 대신 새 레코드가 삽입됩니다.While 루프가 If-else 문 (Java)

나는 레코드가 있는지 여부를 확인하기 위해 if-else 문을 사용하고 있습니다. 현재 코드는 단일 레코드에 대해서만 작동합니다. 로컬 데이터베이스와 다른 데이터베이스의 제품 모델이 존재하는 한 로컬 데이터베이스를 계속 업데이트하려고합니다.

는 여기에 내가 현재 사용하고 코드입니다 :

public static void checkExist() { 
    try { 
     Statement stmt = conn.createStatement(); 
     int prod_qnty, prod_weight; 
     float prod_price; 

     String prod_model = "97801433"; //testing purposes 

     ResultSet rs = stmt.executeQuery("SELECT * from products where products_model = " + prod_model); 

     if (rs.next()){     
      //while (rs.next()) {  
       prod_qnty = rs.getInt("products_quantity"); 
       prod_price = rs.getFloat("products_price"); 
       prod_weight = rs.getInt("products_weight"); 

       System.out.println(prod_qnty + "\t" + prod_price + "\t" + prod_weight); 

       updDB(prod_model, prod_qnty, prod_price, prod_weight); 
      //} 
     } 
     else{ 
      insertDB(prod_model, prod_qnty, prod_price, prod_weight); 
     } 
     stmt.close(); 
    } catch (SQLException ex) { 
     //Logger.getLogger(Check.class.getName()).log(Level.SEVERE, null, ex); 
    } 
} 

기록이 존재하는 내가 while 루프를 추가 한 후 나는, 그러나, if 문 내에서 while 루프를 추가했습니다. 이제는 어떤 기록도 인쇄 할 수 없습니다. 일단 if (rs.next()) 조건에 들어가면 while 루프 안에 들어 가지 않는 것처럼 보입니다.

누구든지 내가 뭘 잘못하고 있는지 알려주겠습니까? if-else 문에서 while 루프를 사용할 수 있습니까? 대개는 다른 방법으로 while 루프 내에서 if-else 문으로 사용됩니다.

도움이 될 것입니다. 고맙습니다.

+0

로거 출력을 주석 처리하는 이유는 무엇입니까? 그 결과는 아주 중요합니다. –

답변

1

당신은 문 경우 별도을 추가 할 필요가 없습니다 while (rs.next()) { //CODE } 다음에()의 2 배를 호출하는 경우

, 커서는 앞으로이 개 기록을 이동하고 쿼리에 대해 하나 개의 기록을 가지고 있다면, 그것으로 가지 않을 것이다 while 루프.

결과가 남아있는 경우에만 CODE가 실행됩니다.

관련 문제