Uso di un'istruzione SQL con parametri
Per usare i dati in un database di SQL Server usando un'istruzione SQL che contiene parametri IN, è possibile usare il metodo executeQuery della classe SQLServerPreparedStatement per restituire un OGGETTO SQLServerResultSet che conterrà i dati richiesti. A tale scopo, è necessario innanzitutto creare un oggetto SQLServerPreparedStatement usando il metodo prepareStatement della classe SQLServerConnection.
Quando si costruisce l'istruzione SQL, i parametri IN sono specificati utilizzando il carattere ? (punto interrogativo), il quale funge da segnaposto per i valori dei parametri che verranno successivamente passati all'istruzione SQL. Per specificare un valore per un parametro, è possibile usare uno dei metodi setter della classe SQLServerPreparedStatement. Il metodo Set da utilizzare dipende dal tipo di dati del valore che si desidera passare all'istruzione SQL.
Quando si passa un valore al metodo Set, è necessario specificare non solo il valore effettivo da utilizzare nell'istruzione SQL, ma anche la posizione ordinale del parametro nell'istruzione stessa. Ad esempio, se l'istruzione SQL contiene un solo parametro, il relativo valore ordinale sarà 1. Se l'istruzione contiene due parametri, il primo valore ordinale sarà 1 e il secondo sarà 2.
Nell'esempio seguente viene passata una connessione aperta al database di esempio AdventureWorks2022 alla funzione , viene costruita un'istruzione preparata sql con un singolo valore di parametro String e quindi i risultati vengono letti dal set di risultati.
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();
}
}