我正在开发android应用程序。 我有很多从服务器获取的复杂数据。首次登录时,我必须将所有数据插入本地sqlite数据库。我发现通过ContentValues保存是最快的方法,但是自定义类存在问题。
for (final CustomClass r : myObjects) {
ContentValues values = new ContentValues();
values.put("ID", r.getId());
Cache.OpenDatabase().insert("Database",null,values);
}
class CustomClass {
int id;
ClassB my_class;
List<ClassC> my_list;
}
将此类数据插入sqlite数据库的最佳方法是什么?该for循环大约旋转1000次。请给我一些提示!
答案 0 :(得分:0)
SQLite不支持直接保存对象,所有内容都必须存储为INTEGER(最多64位带符号,因此为int和long),TEXT(字符串),REAL(8字节IEEE浮点数),NULL或a BLOB(字节数组)。
有些扩展,例如ROOM基本上是SQLite的包装程序(抽象层),可简化对象处理。
但是,通过将循环嵌入事务中,可以加快循环速度:-
SQLiteDatabase db = Cache.OpenDatabase(); //<<<<<<<<<< Outside of the loop as only needed once
db.beginTransaction();
for (final CustomClass r : myObjects) {
ContentValues values = new ContentValues();
values.put("ID", r.getId());
db.insert("Database",null,values);
}
db.setTransactionSuccessful();
db.endTransaction();