显然我并不理解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处理除外)?
答案 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
,分别由valueCol1
,valueCol2
和String
组成。
使用database.insert而不是db.execSQL有什么好处
输入信息少一点,您不必将值转换为insert()
数组。
(Android中更好的View处理除外)?
恕我直言,SQLiteDatabase
execSQL()
上的SQLiteDatabase
提供的“视图处理效果不如{{1}} {{1}},”或许您正在考虑我缺少的内容。