Il tuo problema è che prepari la dichiarazione con
preparedStatement = dbConnection.prepareStatement(selectSQL);
che è corretto, ma quando si tenta di eseguire PreparedStatement si fornisce il selectSQL
stringa ancora:
rs = preparedStatement.executeQuery(selectSQL);
Non è corretto. Hai già preparato la dichiarazione, quindi quando arriva il momento di eseguirla basta farlo
rs = preparedStatement.executeQuery();