在SQLite Android中检索额外结果

时间:2014-10-24 09:05:07

标签: java android sqlite

我有一个管风琴课。 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);代码。

1 个答案:

答案 0 :(得分:0)

解决了,我写了一个删除函数。在closeDB()之前调用它;功能

    public void deleteOrganDatabase() {
        SQLiteDatabase db = this.getWritableDatabase();
        db.execSQL("DELETE FROM " + TABLE_ORGAN);
        db.close();
    }