protected ArrayList<HashMap<String, String>> execute(String sql, ArrayList<String> values, boolean returns) {
        try{
            connect();

            PreparedStatement preparedStatement = connection.prepareStatement(sql);

            if(values != null){
                for(int i=0; i<values.size(); i++){
                    Object value = values.get(i);

                    if(value == null){
                        preparedStatement.setNull(i+1, 91);
                    }else preparedStatement.setString(i+1, values.get(i));
                }
            }

            ArrayList<HashMap<String, String>> results = null;

            if(returns) results = getResults(preparedStatement.executeQuery());
            else preparedStatement.executeUpdate();

            close();

            return results;
        }catch (MySQLIntegrityConstraintViolationException ex){
            throw new IllegalArgumentException("Could not edit database. " + ex.getMessage());
        }catch (SQLException ex){
            throw new IllegalArgumentException(ex.getMessage());
        }
    }