我有一个管风琴课。 Body是ArrayList(List>)
的数组列表插入部分:
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
for (int i=0; i<body.size(); i++) {
for (int j=0; j<body.get(i).size(); j++) {
if (!body.get(i).get(j).getName().isEmpty()) {
values.put(KEY_NAME, body.get(i).get(j).getName());
values.put(KEY_GENDER_ID, body.get(i).get(j).getGenderId());
Log.d("Insertion", body.get(i).get(j).getName());
long result = db.insert(TABLE_ORGAN, null, values);
values.clear();
}
}
}
检索部分:
SQLiteDatabase db = this.getReadableDatabase();
String getAllOrganRecords = "SELECT * FROM " + TABLE_ORGAN;
Cursor c = db.rawQuery(getAllOrganRecords, null);
if(c != null)
c.move(0);
List<Organ> organList = new ArrayList<Organ>();
if (c.moveToFirst()) {
do {
Log.d("GET", String.valueOf(c.getInt(c.getColumnIndex(KEY_ID))) + " " + c.getString(c.getColumnIndex(KEY_NAME)));
Organ temp = new Organ(c.getInt(c.getColumnIndex(KEY_ID)), c.getString(c.getColumnIndex(KEY_NAME)), c.getInt(c.getColumnIndex(KEY_GENDER_ID)));
organList.add(temp);
} while (c.moveToNext());
}
插入日志:
D/Insertion﹕ 0 Brain|
D/Insertion﹕ 1 Eye|
...
D/Insertion﹕ 120 Knee|
D/Insertion﹕ 121 Foot
获取日志:
D/GET﹕ 0 Brain|
D/GET﹕ 1 Eye|
..
D/GET﹕ 120 Knee|
D/GET﹕ 121 Foot|
D/GET﹕ 122 Brain|
D/GET﹕ 123 Eye|
...
D/GET﹕ 580 Knee|
D/GET﹕ 581 Foot
我在ArrayList中的数据介于0 Brain和121 foot之间,但是当我运行get function时,我会看到这个日志。我哪里弄错了?
添加:每次运行我的应用时,都会将值插入数据库。在执行sql代码之前,我无法清除数据库。
还在onCreate方法中添加了db.execSQL("DROP TABLE IF EXISTS " + TABLE_ORGAN);
代码。
答案 0 :(得分:0)
解决了,我写了一个删除函数。在closeDB()之前调用它;功能
public void deleteOrganDatabase() {
SQLiteDatabase db = this.getWritableDatabase();
db.execSQL("DELETE FROM " + TABLE_ORGAN);
db.close();
}