Ausführen mehrerer Abfragen in Java in einer einzigen Anweisung
JDBC löst normalerweise eine Ausnahme aus, wenn versucht wird, mehrere Abfragen in einer einzigen Anweisung auszuführen, a Funktion, die im Abfragebrowser von MySQL verfügbar ist. Es gibt jedoch zwei Ansätze, die diese Funktionalität ermöglichen:
Ansatz 1: Konfigurieren mehrerer Abfragen
Setzen Sie die Verbindungseigenschaft „allowMultiQueries“ in der Datenbank-URL auf „true“. um mehrere durch Semikolons getrennte Abfragen zu ermöglichen. Dies sollte während der Verbindungsanforderung angegeben werden.
String dbUrl = "jdbc:mysql:///test?allowMultiQueries=true";
Anstatt „executeBatch“ zu verwenden, verwenden Sie „execute(String sql)“, um Ergebnisse der Abfrageausführung abzurufen. Durchlaufen Sie die Ergebnisse und verarbeiten Sie sie mithilfe der folgenden Schritte:
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(); }
Ansatz 2: Gespeicherte Prozeduren mit Cursorn
Erstellen Sie eine gespeicherte Prozedur, die mehrere Abfragen ausführt, einschließlich select- und DML-Anweisungen. Rufen Sie diese Prozedur aus Java mit „CallableStatement“ auf. Mit diesem Ansatz können Sie mehrere ResultSets erfassen. DML-Ergebnisse können jedoch nicht direkt erfasst werden.
CallableStatement cstmt = con.prepareCall("call multi_query()"); boolean hasMoreResultSets = cstmt.execute(); READING_QUERY_RESULTS: while (hasMoreElementsResultSets) { ResultSet rs = stmt.getResultSet(); // Handle result set here }
Das obige ist der detaillierte Inhalt vonWie kann ich mehrere SQL-Abfragen in einer einzigen Java-Anweisung ausführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!