Freigeben über


Verwenden von SQL-Anweisungen mit Parametern

JDBC-Treiber herunterladen

Wenn Sie Daten in einer SQL Server-Datenbank mit einer SQL-Anweisung verarbeiten möchten, die IN-Parameter enthält, können Sie mit der executeQuery-Methode der SQLServerPreparedStatement-Klasse ein SQLServerResultSet zurückgeben, das die angeforderten Daten enthält. Sie müssen dazu zuerst mit der prepareStatement-Methode der SQLServerConnection-Klasse ein SQLServerPreparedStatement-Objekt erstellen.

Beim Erstellen der SQL-Anweisung werden die IN-Parameter mit dem ? (Fragezeichen) angegeben, das als Platzhalter für die Parameterwerte fungiert, die später an die SQL-Anweisung übergeben werden. Mit den Settermethoden der SQLServerPreparedStatement-Klasse können Sie für einen Parameter einen Wert angeben. Die verwendete Festlegungsmethode hängt vom Datentyp des Werts ab, der an die SQL-Anweisung übergeben werden soll.

Wenn Sie einen Wert an die Festlegungsmethode übergeben, müssen Sie nicht nur den Wert angeben, der in der SQL-Anweisung verwendet werden soll, sondern auch die ordinale Position des Parameters in der SQL-Anweisung. Wenn die SQL-Anweisung beispielsweise einen einzigen Parameter enthält, ist der Ordinalwert „1“. Wenn die Anweisung zwei Parameter enthält, ist der erste Ordinalwert „1“ und der zweite Ordinalwert „2“.

Im folgenden Beispiel werden eine offene Verbindung zur AdventureWorks2022-Beispieldatenbank an die Funktion übergeben, eine vorbereitete SQL-Anweisung erstellt und mit einem einzigen String-Parameterwert ausgeführt sowie die Ergebnisse aus dem Resultset gelesen.

public static void executeStatement(Connection con) {
    try(PreparedStatement pstmt = con.prepareStatement("SELECT LastName, FirstName FROM Person.Contact WHERE LastName = ?");) {
        pstmt.setString(1, "Smith");
        ResultSet rs = pstmt.executeQuery();

        while (rs.next()) {
            System.out.println(rs.getString("LastName") + ", " + rs.getString("FirstName"));
        }
    }
    // Handle any errors that may have occurred.
    catch (SQLException e) {
        e.printStackTrace();
    }
}

Siehe auch

Verwenden von Anweisungen mit SQL