加載所以我還是建立一個數據庫,以支持我的一個項目。有兩種不同的東西要保存:第一,屬性存儲在一個Java類中的一些球員的對象;第二,簡單值的值。安卓:從SQLite數據庫
ATM我的問題就出在玩家對象的負載值的過程,並在各自的班級寫它。
現在讓我們看看一些代碼:
以下你看到的我想用在數據庫中保存的值的方法。 這工作正常大氣壓,但我才意識到我仍然傳遞contentValues對象的「ID」,這是我沒有設定一個額外的價值 - 並計劃繼續通過這種方式 - 如自動增量。 任何想法如何在相應的工作?
public void savePlayer(Player player[]) {
for (int i = 0; i <= 3; i++) {
playerValues.put("ID", i);
playerValues.put("Name", player[i].getName());
playerValues.put("HP", player[i].getHp());
playerValues.put("Satisfaction", player[i].getsatisfaction());
playerValues.put("Hygiene", player[i].isHygieneInt());
playerValues.put("IsAlive", player[i].isAliveInt());
}
db.insert("playertable", null, playerValues);
}
好了,請保持你的帽子,因爲這可能看起來有點像意大利麪條 - 負載方法:
public void loadPlayer() {
String[] namecolumn = { "Name" };
String[] intcolumn = { "ID, HP, Satisfaction, Hygiene, IsAlive" };
String[] namesToString = new String[4];
for (int j = 0; j <= 3; j++) {
Cursor playerCursorName = db.query("playertable", namecolumn, "ID="
+ j, null, null, null, null);
namesToString = cursorToString(playerCursorName);
Resource.playerArray[j].setName(namesToString[j]);
}
for (int i = 0; i < 3; i++) {
int[] restToInt;
Cursor playerCursorInt = db.query("playertable", intcolumn, "ID="
+ i, null, null, null, null);
restToInt = cursorToInt(playerCursorInt, 4);
Resource.playerArray[i].setHp(restToInt[i]);
Resource.playerArray[i].setsatisfaction(restToInt[i]);
Resource.playerArray[i].setHygieneInt(restToInt[i]);
Resource.playerArray[i].setAliveInt(restToInt[i]);
}
}
是的,我知道這看起來很醜陋,但讓我解釋一下:
因爲有4個播放器對象,我計劃通過使用ID作爲標識符遍歷數據庫條目來一次只准確地獲取一行,並在Java類中寫入此對象的名稱和其他值,其中I想要在我的項目中管理它們。
注:同樣的問題自動增量比在這裏保存方法
另外,我打電話loadPlayer時,因爲被請求 指數-1得到CursorIndexOutOfBoundsException - 不是操作的結果數據庫導致錯誤?
是啊,這幾乎是它,我會爲你提供額外的代碼,如果提出要求,希望有人能幫助我
您可能還想要發佈創建數據庫表的代碼,以及cursorToString和cursorToInt代碼。 – Rob