多个条目到SQLite DB

时间:2014-04-23 15:03:19

标签: android sqlite android-sqlite

当我在数据库中输入字符串时,我能够检索它。但是,如果我打开数据库并再次将另一个字符串放入数据库并关闭它,则条目不存在...

            entry.open();
            entry.putChampion1IntoDb(jsonString);
            entry.close();



            entry.open();
            entry.putChampion2IntoDb(jsonString2);
            entry.close();

    public long putChampion1IntoDb(String json) {
        ContentValues cv = new ContentValues();
        cv.put(KEY_CHAMPION_1, json);

        return mDatabase.insert(DATABASE_TABLE, null, cv);
    }

    public long putChampion2IntoDb(String json) {
        ContentValues cv = new ContentValues();
        cv.put(KEY_CHAMPION_2, json);

        return mDatabase.insert(DATABASE_TABLE, null, cv);
}

然后当我调用我的DB类来检索数据时,字符串返回null

public JSONObject getChampions2() throws JSONException {
        Cursor c = mDatabase.query(DATABASE_TABLE, mColumns, null, null, null, null, null);
        c.moveToFirst();
        String jsonFeed = c.getString(c.getColumnIndex(KEY_CHAMPION_2));
        JSONObject json = new JSONObject(jsonFeed);
        return json;
}

也许我正在使用c.moveToFirst()导航数据库错误;

我会有大约5列,只有1行。 (至少在我脑海里,我想象这样)


| Champion1 | Champion2 | Champion3 | Champion4 | Champion5 |

我第一次使用.open()和.putChampionIntoDB(字符串),关联的键是第一列。 光标与行正确关联?那么,c.moveToFirst()移动到存储我所有信息的第一行,对吗?

提前致谢!

1 个答案:

答案 0 :(得分:2)

我认为您不了解数据库的工作原理。每次调用insert时,都会插入新行。你真的有这样的数据: | Champion1 | Champion2 | Champion3 | Champion4 | Champion5 |

| somedata | null | null | null | null |

| null | somedata | null | null | null |

等等。这就是为什么当你检索第一行并尝试获得KYY_CHAMPION2时它是空的。

我想,你真的需要制作表格

| _id |冠军|

并将每个数据部分存储在单独的行中。然后你可以轻松地迭代抛出它们。

如果您仍想将数据存储在一行中,则需要在第一次之后调用db.update()而不是db.insert()。但是,当您调用update时,您必须确定要更新的行。如果您没有某些列作为主键,则可能是一个问题。