J'essaie d'utiliser des instructions préparées pour définir un nom de table pour sélectionner des données, mais je continue d'obtenir une erreur lorsque j'exécute la requête.Utilisation des instructions Prepared pour définir le nom de la table
L'erreur et l'exemple de code sont affichés ci-dessous.
[Microsoft][ODBC Microsoft Access Driver] Parameter 'Pa_RaM000' specified where a table name is required.
private String query1 = "SELECT plantID, edrman, plant, vaxnode FROM [?]"; //?=date
public Execute(String reportDate){
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn = DriverManager.getConnection(Display.DB_MERC);
PreparedStatement st = conn.prepareStatement(query1);
st.setString(1, reportDate);
ResultSet rs = st.executeQuery();
Des idées sur ce qui pourrait être à l'origine de cela?
Oui, désinfection des entrées pour éviter les injections SQL! –
Si vous avez besoin de substituer différents noms de tables dans une requête avec la même structure, cela indique une faille dans la conception de votre base de données. Au moins, il pointe vers plusieurs tables avec les mêmes attributs de relation. Normaliser dans une seule table avec une colonne "sujet". –