Verwenden einer SQL-Anweisung mit Parametern
Zum Arbeiten mit Daten in einer SQL Server-Datenbank mithilfe einer SQL-Anweisung, die IN-Parameter enthält, können Sie die executeQuery-Methode der SQLServerPreparedStatement-Klasse verwenden, um ein SQLServerResultSet zurückzugeben, 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 wird eine offene Verbindung mit der AdventureWorks2022-Beispieldatenbank an die Funktion übergeben, eine sql vorbereitete Anweisung wird erstellt und mit einem einzelnen String-Parameterwert ausgeführt, und dann werden 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();
}
}