Uso di istruzioni SQL con parametri

Scaricare il driver JDBC

Per lavorare con i dati in un database di SQL Server usando un'istruzione SQL contenente parametri IN, è possibile usare il metodo executeQuery della classe SQLServerPreparedStatement per restituire un oggetto SQLServerResultSet contenente 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 alla funzione una connessione aperta al database di esempio AdventureWorks2022, un'istruzione preparata di SQL viene creata ed eseguita 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();
    }
}

Vedi anche

Uso di istruzioni SQL