Reusar paramétros en un java.sql.PreparedStatement

java.sql
11 de Junio del 2004
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?

Lucas
11 de Junio del 2004
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.

java.sql
11 de Junio del 2004
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.