단일 문에서 Java의 여러 쿼리 실행
JDBC는 일반적으로 단일 문에서 여러 쿼리를 실행하려고 하면 예외를 발생시킵니다. MySQL의 쿼리 브라우저에서 사용할 수 있는 기능입니다. 그러나 이 기능을 용이하게 하는 두 가지 접근 방식이 있습니다.
접근 방법 1: 다중 쿼리 구성
데이터베이스 URL에서 "allowMultiQueries" 연결 속성을 "true"로 설정합니다. 세미콜론으로 구분된 여러 쿼리를 활성화합니다. 이는 연결 요청 시 지정되어야 합니다.
String dbUrl = "jdbc:mysql:///test?allowMultiQueries=true";
"executeBatch"를 사용하는 대신 "execute(String sql)"를 사용하여 쿼리 실행 결과를 검색합니다. 결과를 반복하고 다음 단계를 사용하여 처리합니다.
boolean hasMoreResultSets = stmt.execute(multiQuerySqlString); READING_QUERY_RESULTS: while (hasMoreElementsResultSets || stmt.getUpdateCount() != -1) { if (hasMoreElementsResultSets) { ResultSet rs = stmt.getResultSet(); // Handle result set here } else { // DDL/DML operation int queryResult = stmt.getUpdateCount(); if (queryResult == -1) { // No more queries break READING_QUERY_RESULTS; } // Handle success, failure, or generated keys here } hasMoreElementsResultSets = stmt.getMoreResults(); }
접근 방법 2: 커서를 사용하는 저장 프로시저
다음을 포함하여 여러 쿼리를 실행하는 저장 프로시저를 만듭니다. select 및 DML 문. "CallableStatement"를 사용하여 Java에서 이 프로시저를 호출하세요. 이 접근 방식을 사용하면 여러 ResultSet를 캡처할 수 있습니다. 단, DML 결과는 직접 캡쳐할 수 없습니다.
CallableStatement cstmt = con.prepareCall("call multi_query()"); boolean hasMoreResultSets = cstmt.execute(); READING_QUERY_RESULTS: while (hasMoreElementsResultSets) { ResultSet rs = stmt.getResultSet(); // Handle result set here }
위 내용은 단일 Java 문에서 여러 SQL 쿼리를 어떻게 실행할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!