Tu problema es que preparas la declaración con
preparedStatement = dbConnection.prepareStatement(selectSQL);
lo cual es correcto, pero luego, cuando intenta ejecutar PreparedStatement, proporciona el selectSQL
cadena de nuevo:
rs = preparedStatement.executeQuery(selectSQL);
Eso es incorrecto. Ya ha preparado la declaración, por lo que cuando llegue el momento de ejecutarla, simplemente haga
rs = preparedStatement.executeQuery();