Mit Prepared Statements zu Tabelle set Name

Ich versuche, die Verwendung von vorbereiteten Anweisungen zum festlegen einer Tabelle Namen wählen Daten aus, aber ich erhalte eine Fehlermeldung, wenn ich die Abfrage ausführen.

Den Fehler und Beispiel-code unten angezeigt wird.

[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();

Irgendwelche Gedanken auf, was könnte die Ursache sein?

Ja, input sanitization, um zu verhindern, dass SQL-Injektionen!
Wenn Sie brauchen, um Ersatz verschiedene Tabellennamen in einer Abfrage mit der gleichen Struktur weist es auf einen Fehler in deiner Datenbank-design. Zumindest weist es auf mehrere Tabellen mit der selben relation Attribute. Die Normalisierung der es in einer einzigen Tabelle mit einer "Betreff-Spalte".

InformationsquelleAutor Brandon | 2009-07-30

Schreibe einen Kommentar