当我在数据库中输入字符串时,我能够检索它。但是,如果我打开数据库并再次将另一个字符串放入数据库并关闭它,则条目不存在...
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()移动到存储我所有信息的第一行,对吗?
提前致谢!
答案 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时,您必须确定要更新的行。如果您没有某些列作为主键,则可能是一个问题。