2015-01-04 7 views
0

예를 들어, 입력 매개 변수에 따라 다른 수의 결과 세트를 리턴하는 스토어드 프로 시저가 있습니다. 따라서 Java에서는 Statement 클래스의 execute 메소드를 사용합니다. execute() 메소드에 의해 리턴 된 결과 세트의 수를 결정하는 메소드가 있습니까?메소드에 의해 리턴 된 결과 세트의 수 execute

+0

네,하지만 나는 또한 첫 번째 결과 집합에서의 위치를 ​​변경하는 반복의 끝에서해야합니다. – FanFan

답변

1

불행히도 결과 세트 수를 직접 검색 할 수있는 함수는 없다고 생각합니다.

처리하기 전에 총 카운트가 실제로 필요한 경우 가능한 모든 솔루션을 통해 모든 결과 집합을 반복하여 배열로 수집 한 다음 카운트를 얻은 후 후속 루프에서 처리해야합니다. 여기 데모 (포스트 그레스 특정이기는하지만) 작업입니다 :

import java.util.List; 
import java.util.ArrayList; 

import java.sql.DriverManager; 
import java.sql.Connection; 
import java.sql.Statement; 
import java.sql.PreparedStatement; 
import java.sql.ResultSet; 

public class ResultSetCountDemo { 

    public static void main(String[] args) throws Exception { 

     Class.forName("org.postgresql.Driver"); 

     Connection con = DriverManager.getConnection("jdbc:postgresql://localhost:5432/main", "postgres", args.length >= 1 ? args[0] : ""); 

     // execute query 
     Statement st = con.createStatement(); 
     boolean b = st.execute("select 14, 'a' union all select 15, 'b'; select 26, 'x' union all select 27, 'y';"); 

     // collect and count result sets 
     List<ResultSet> rsList = new ArrayList<ResultSet>(); 
     int count = 0; 
     if (b) { 
      rsList.add(st.getResultSet()); 
      for (++count; st.getMoreResults(Statement.KEEP_CURRENT_RESULT); ++count) 
       rsList.add(st.getResultSet()); 
     } // end if 
     System.out.println(count+" set"+(count == 1 ? "" : "s")); 

     // process and close result sets 
     for (int s = 1; s <= count; ++s) { 
      ResultSet rs = rsList.get(s-1); 
      for (int r = 1; rs.next(); ++r) { 
       System.out.println("set "+s+" ("+r+","+1+") == "+rs.getInt(1)); 
       System.out.println("set "+s+" ("+r+","+2+") == "+rs.getString(2)); 
      } // end for 
      rs.close(); 
     } // end for 

     System.exit(0); 

    } // end main() 

} // end class ResultSetCountDemo 

출력 :

2 sets 
set 1 (1,1) == 14 
set 1 (1,2) == a 
set 1 (2,1) == 15 
set 1 (2,2) == b 
set 2 (1,1) == 26 
set 2 (1,2) == x 
set 2 (2,1) == 27 
set 2 (2,2) == y