Estoy usando un objeto Java PreparedStatment para construir una serie de consultas INSERT por lotes. La instrucción de consulta es el formato de ...Cómo usar una variable de nombre de tabla para una instrucción preparada java insertar
String strQuery = "INSERT INTO ? (col1, col2, col3, col4, col5) VALUES (?,?,?,?,?,?);";
... por lo tanto los valores de campo y el nombre de tabla son variables (es decir. Tengo varias tablas con el mismo formato de columna de los cuales cada inserto se dirige a una uno diferente). Puedo hacer funcionar los ejecutables si elimino el "?" variable de tablas y de código duro, pero se insertará cada declaración preparada en una tabla diferente, así tiene que seguir siendo una variable que pueblan inmediatamente antes de ejecutar la consulta por lotes utilizando ...
stmt.setString(1, "tableName1");
¿Cómo puedo dejar que esto sea una dinámica variable por favor?
Gracias amigos ... parece que no sé el nombre de la tabla en la que quiero insertar hasta el punto de intercambio en las variables para cada fila, lo mejor es construir la inserción dentro de un procedimiento almacenado de base de datos. A continuación, pase todos los parámetros para cada fila en el proceso almacenado y deje que la BD maneje la manipulación del nombre de tabla. De todos modos, gracias por las respuestas. :-) – ForestSDMC
¿Significa esto que la protección de inyección SQL es imposible con los nombres de tablas dinámicas? –
@Richard Llegué a la misma conclusión y suena tonto, pero al menos es bastante fácil verificar el nombre de la tabla con la lista de tablas disponibles en la base de datos. – JulienD