À l'aide de Déclarations Préparées à la Table de jeu de Nom

Je suis en train d'utiliser les requêtes préparées pour définir un nom de table pour sélectionner les données à partir, mais je reçois une erreur lorsque j'essaie d'exécuter la requête.

L'erreur et de l'exemple de code est affiché en 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 pensées sur ce qui pourrait être la cause?

  • Oui, d'entrée de désinfection afin d'éviter des injections SQL!
  • Si vous avez besoin de le remplacer par les noms de table dans une requête avec la même structure, il pointe à une faille dans votre conception de base de données. Au moins il souligne à plusieurs tables avec la même relation attributs. Normaliser dans un seul tableau avec une colonne "sujet".
InformationsquelleAutor Brandon | 2009-07-30