Zakochałeś się w mylącej hierarchii typów PreparedStatement extends Statement :
PreparedStatement ma ten sam execute*(String) metody takie jak Statement , ale nie powinny być używane, wystarczy użyć bezparametrowego execute*() metody PreparedStatement --- podałeś już rzeczywisty ciąg zapytania do wykonania za pomocą conn.prepareStatement() .