Reusar paramétros en un java.sql.PreparedStatement
Un String contiene una sentencia SQL con varios "?" (parámetros de entrada).
La sentencia está sólo en una clase, pero se utiliza desde muchos otros sitios en los que se construye un java.sql.PreparedStatement con valores distintos para los parámetros.
Ahora me gustarÃa modificar el String, de manera que la nueva sentencia usarÃa más de una vez el mismo parámetro. Pero claro, no me gustarÃa tener que modificar todos los sitios en los que se hace referencia a dicho String para pasar varias veces el mismo parámetro.
Me temo que la respuesta es "no" pero, ¿alguien sabe si es posible que en el String se use más de una vez un parámetro que sólo se pasa una vez?
La sentencia está sólo en una clase, pero se utiliza desde muchos otros sitios en los que se construye un java.sql.PreparedStatement con valores distintos para los parámetros.
Ahora me gustarÃa modificar el String, de manera que la nueva sentencia usarÃa más de una vez el mismo parámetro. Pero claro, no me gustarÃa tener que modificar todos los sitios en los que se hace referencia a dicho String para pasar varias veces el mismo parámetro.
Me temo que la respuesta es "no" pero, ¿alguien sabe si es posible que en el String se use más de una vez un parámetro que sólo se pasa una vez?
Hola, no entiendo muy bien tu pregunta. Entiendo que quieres modificar la query, pero aceptando los mismos parametros. En vez de referencia el String desde otras clases, puedes probar a hacer un getString en la clase que la contiene y que el resto la pidan cada vez, por lo que puedes modificarla y el resto de clases no se enteran, sustituyen los parametros y yasta.
Ok, no me he explicado bien. El siguiente ejemplo es inventado, más sencillo de lo que tengo en realidad, pero espero que sirva para aclarar mi pregunta.
Supongamos que antes tenÃa:
public static final String TITULOS = "SELECT titulo FROM libros WHERE id_autor=?";
Y ahora lo quiero sustituir por:
public static final String TITULOS = "(SELECT titulo FROM libros WHERE id_autor=?) UNION (SELECT titulo FROM articulos WHERE id_autor=?)";
Lo ideal para mÃ, supongo que imposible, y por lo que preguntaba, es si existe una manera de escribir la nueva sentencia de forma que no sea necesario pasar dos parámetros con el mismo valor (llamar dos veces al método java.sql.PreparedStatement.setInt()), sino simplemente pasar un único valor que se use dos veces.
Supongamos que antes tenÃa:
public static final String TITULOS = "SELECT titulo FROM libros WHERE id_autor=?";
Y ahora lo quiero sustituir por:
public static final String TITULOS = "(SELECT titulo FROM libros WHERE id_autor=?) UNION (SELECT titulo FROM articulos WHERE id_autor=?)";
Lo ideal para mÃ, supongo que imposible, y por lo que preguntaba, es si existe una manera de escribir la nueva sentencia de forma que no sea necesario pasar dos parámetros con el mismo valor (llamar dos veces al método java.sql.PreparedStatement.setInt()), sino simplemente pasar un único valor que se use dos veces.
