Так что я все еще строю базу данных для поддержки моего проекта. Необходимо сохранить две разные вещи: во-первых, значения атрибутов некоторых объектов игроков, а во-вторых, простые значения, хранящиеся в классе Java.
ATM Моя проблема заключается в процессе загрузки значений объекта проигрывателя и записи его в соответствующий класс.
Теперь давайте посмотрим код:
После вы увидите метод, который я хочу использовать для сохранения значений в базе данных.
Это прекрасно работает, но я только что понял, что все еще передаю объекту contentValues дополнительное значение для идентификатора, который я установил - и планировал сохранить таким образом - как автоинкремент.
Любая идея, как работать в этом соответственно?
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 объекта игрока, я планировал перебирать записи в базе данных, используя идентификатор в качестве идентификатора, чтобы получить ровно одну строку за раз, и записав имя и другие значения этого объекта в java-классе, где я хочу управлять ими в рамках моего проекта.
Примечание: здесь та же проблема с автоинкрементом, что и в методе сохранения
Кроме того, я получаю CursorIndexOutOfBoundsException при вызове loadPlayer, потому что
Индекс -1 запрашивается - разве это не результат операции с базой данных, приводящей к ошибке?
Да, в общем-то, я предоставлю вам дополнительный код, если потребуется, надеюсь, кто-нибудь может мне помочь