Share via


Usar una instrucción SQL con parámetros

Para trabajar con los datos de una base de datos de SQL Server con una instrucción SQL que contiene parámetros IN, puede usar el método executeQuery de la clase SQLServerPreparedStatement para devolver SQLServerResultSet, que contiene los datos solicitados. Para ello, debe crear primero un objeto SQLServerPreparedStatement mediante el método prepareStatement de la clase SQLServerConnection.

Al generar la instrucción SQL, los parámetros IN se especifican mediante el carácter ? (signo de interrogación), que actúa como un marcador de posición para los valores de parámetros que se van a pasar a la instrucción SQL. Para especificar un valor de un parámetro, puede usar uno de los métodos de establecimiento de la clase SQLServerPreparedStatement. El método de establecedor usado se determina mediante el tipo de datos del valor que desea pasar a la instrucción SQL.

Al pasar un valor al método de establecedor, debe especificar no sólo el valor real que se va a usar en la instrucción SQL, sino también la posición ordinal del parámetro en la instrucción SQL. Por ejemplo, si la instrucción SQL contiene un solo parámetro, su valor ordinal es 1 y, si la instrucción contiene dos parámetros, el primer valor ordinal es 1 y el segundo es 2.

En el siguiente ejemplo, se pasa una conexión abierta a la base de datos modelo AdventureWorks de SQL Server 2005 a la función, se genera una instrucción SQL preparada y se ejecuta con un solo valor de parámetro de cadena y, a continuación, se leen los resultados desde el conjunto de resultados.

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();
   }
}

Vea también

Otros recursos

Usar instrucciones con SQL