3

显然我不了解Android中ContentValues的概念。如何保证像database.insert(TABLE, null, contentValues);这样的插入语句 以正确的顺序获取 contentValues 的所有值,因为 ContentValues 是一个集合?

假设 TABLE 有 3 个字符串列。如果我写以下...

contentValues.put("col1", valueCol1);
contentValues.put("col2", valueCol2);
contentValues.put("col3", valueCol3);

...不能保证 database.insert 按此顺序插入值,还是我理解错误?

使用 database.insert 而不是 db.execSQL 有什么好处(Android 中更好的视图处理除外)?

4

1 回答 1

2

因为 ContentValues 是一个集合?

ContentValues更接近于 a Map。它是键值存储,以字符串为键。

不能保证 database.insert 按此顺序插入值,还是我理解错误?

AnINSERT将同时插入这些值,就像INSERT过去几十年来任何 SQL 兼容数据库中语句的工作方式一样。

以您的示例为例,如果我们将insert()ContentValues放入名为 的表中foo,则结果将等效于以下内容:

db.execSQL("INSERT INTO foo (col3, col1, col2) VALUES (?, ?, ?)", args);

其中argsa分别String[]valueCol3valueCol1和组成valueCol2

使用 database.insert 而不是 db.execSQL 有什么好处?

它涉及更少的输入,并且您不必将值转换为String数组。

(除了Android中更好的视图处理)?

恕我直言,insert()onSQLiteDatabase并没有提供比execSQL()on更好的“视图处理” SQLiteDatabase,尽管您可能正在考虑我缺少的东西。

于 2013-05-11T16:41:45.723 回答