0
예를 들어, 입력 매개 변수에 따라 다른 수의 결과 세트를 리턴하는 스토어드 프로 시저가 있습니다. 따라서 Java에서는 Statement 클래스의 execute 메소드를 사용합니다. execute() 메소드에 의해 리턴 된 결과 세트의 수를 결정하는 메소드가 있습니까?메소드에 의해 리턴 된 결과 세트의 수 execute
예를 들어, 입력 매개 변수에 따라 다른 수의 결과 세트를 리턴하는 스토어드 프로 시저가 있습니다. 따라서 Java에서는 Statement 클래스의 execute 메소드를 사용합니다. execute() 메소드에 의해 리턴 된 결과 세트의 수를 결정하는 메소드가 있습니까?메소드에 의해 리턴 된 결과 세트의 수 execute
불행히도 결과 세트 수를 직접 검색 할 수있는 함수는 없다고 생각합니다.
처리하기 전에 총 카운트가 실제로 필요한 경우 가능한 모든 솔루션을 통해 모든 결과 집합을 반복하여 배열로 수집 한 다음 카운트를 얻은 후 후속 루프에서 처리해야합니다. 여기 데모 (포스트 그레스 특정이기는하지만) 작업입니다 :
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
네,하지만 나는 또한 첫 번째 결과 집합에서의 위치를 변경하는 반복의 끝에서해야합니다. – FanFan