Android ContentValues:插入时值是否有误?

时间:2013-05-11 16:20:48

标签: android android-sqlite

显然我并不理解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中更好的View处理除外)?

1 个答案:

答案 0 :(得分:2)

  

因为ContentValues是一个集合?

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

  

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

INSERT将同时插入这些值,INSERT语句在过去几十年中在任何符合SQL的数据库中都有效。

要使用您的示例,如果我们insert() ContentValues foo到名为db.execSQL("INSERT INTO foo (col3, col1, col2) VALUES (?, ?, ?)", args); 的表中,结果将等同于以下内容:

args

其中String[]valueCol3,分别由valueCol1valueCol2String组成。

  

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

输入信息少一点,您不必将值转换为insert()数组。

  

(Android中更好的View处理除外)?

恕我直言,SQLiteDatabase execSQL()上的SQLiteDatabase提供的“视图处理效果不如{{1}} {{1}},”或许您正在考虑我缺少的内容。