幕后发生了什么?

时间:2012-05-29 07:00:49

标签: java android sqlite

我遇到了以下代码,我需要对此代码进行一些澄清。

http://www.vogella.com/articles/AndroidSQLite/article.html#contentprovider_overview

private void checkColumns(String[] projection) {
        String[] available = { TodoTable.COLUMN_CATEGORY,
                TodoTable.COLUMN_SUMMARY, TodoTable.COLUMN_DESCRIPTION,
                TodoTable.COLUMN_ID };
        if (projection != null) {
            HashSet<String> requestedColumns = new HashSet<String>(
                    Arrays.asList(projection));
            HashSet<String> availableColumns = new HashSet<String>(
                    Arrays.asList(available));
            // Check if all columns which are requested are available
            if (!availableColumns.containsAll(requestedColumns)) {
                throw new IllegalArgumentException(
                        "Unknown columns in projection");
            }
        }
    }

我的问题是:由于hashset用于比较幕后发生的值吗? hashset是否存储了表中的数据?如果是,那么我可以在另一个程序中使用此值并在控制台中打印出来吗?

我不确定发生了什么,请解释一下。

感谢。

1 个答案:

答案 0 :(得分:0)

您粘贴的代码的目的只是检查用户是否未在投影中提供表中不存在的列。没有针对指定的表进行查询,也没有提取数据。这只是有效性检查。