我正在尝试使用准备好的语句来设置表名以从中选择数据,但是执行查询时,我总是收到错误消息。
错误和示例代码如下所示。
[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();
有什么想法可能导致这种情况?
表名不能用作参数。它必须是硬编码的。因此,你可以执行以下操作:
private String query1 = "SELECT plantID, edrman, plant, vaxnode FROM [" + reportDate + "?]";