Heim >Java >javaLernprogramm >Wie kann ich mehrere SQL-Abfragen in einer einzigen Java-Anweisung ausführen?

Wie kann ich mehrere SQL-Abfragen in einer einzigen Java-Anweisung ausführen?

Barbara Streisand
Barbara StreisandOriginal
2024-12-21 09:50:13660Durchsuche

How Can I Execute Multiple SQL Queries in a Single Java Statement?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn