Utilizzo di istruzioni SQL con parametri

Per elaborare i dati di un database di SQL Server utilizzando un'istruzione SQL contenente parametri IN, è possibile utilizzare il metodo executeQuery della classe SQLServerPreparedStatement per restituire una classeSQLServerResultSet contenente i dati richiesti. È necessario innanzitutto creare un oggetto SQLServerPreparedStatement utilizzando 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 utilizzare uno dei metodi Set 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. Se, ad esempio, l'istruzione SQL contiene un solo parametro, il valore ordinale sarà 1. Se ne contiene due, invece, il primo valore ordinale sarà 1, mentre il secondo valore ordinale sarà 2.

Nell'esempio seguente una connessione aperta a AdventureWorks, il database di esempio di SQL Server 2005, è passata alla funzione e un'istruzione SQL preparata viene costruita ed eseguita con un singolo valore del parametro di stringa. I risultati vengono quindi letti dal set di risultati.

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

      while (rs.next()) {
         System.out.println(rs.getString("LastName") + ", " + rs.getString("FirstName"));
      }
      rs.close();
      pstmt.close();
   }
   catch (Exception e) {
      e.printStackTrace();
   }
}

Vedere anche

Mostra: