Just to update this for current technologies:
While the JDBC-ODBC Bridge and Access ODBC were unable to handle a PreparedStatement with a column name containing a question mark, the UCanAccess JDBC driver handles it just fine, as can be confirmed with the following code:
String connectionUrl = "jdbc:ucanaccess://C:/Users/Public/UCanAccessTest.accdb"; Connection conn = DriverManager.getConnection(connectionUrl); String sql = "SELECT ID, [Open?] FROM tblJobList WHERE WeekEnding=?"; PreparedStatement ps = conn.prepareStatement(sql); ps.setDate(1, java.sql.Date.valueOf("2016-01-01")); ResultSet rs = ps.executeQuery(); while (rs.next()) { System.out.printf("%d: %s%n", rs.getInt("ID"), rs.getBoolean("Open?")); } conn.close(); For more information on UCanAccess, see
Manipulating an Access database from Java without ODBCManipulating an Access database from Java without ODBC