W
Wolverine566561
Gast
Hi,
ich habe folgendes Problem zu lösen:
Ich entwickle eine App, die Dartsturniere verwalten soll. Ich möchte gerne jedem angemeldeten Spieler App-intern eine eindeutige ID in Form eines Integer-Wertes verpassen.
Die Idee meiner Lösung ist diese:
Ich habe in der SQLite-Datenbank eine Tabelle user_id angelegt, die nur eine Spalte user_id_counter hat. Beim erstmaligen anlegen (onCreate()) der Datenbank wird ein Datensatz angelegt, der den Wert 1 enthält:
Wenn nun ein Spieler in der App registriert wird, soll der id_counter ausgelesen werden und dem aktuellen Spieler zugewiesen werden. Die eingegebenen Spielerdaten werden dann in einer separaten Tabelle gespeichert. Die ID wird dann in Java um 1 inkrementiert und der inkrementierte Wert soll mittels update in die Datenbank geschrieben werden.
Das funktioniert auch, aber leider nur einmal Sobald die ID in id_counter den Wert 2 hat, funktioniert das nicht mehr. Warum???
Ich habe jetzt so ziemlich alles, was mir eingefallen ist am update-statement geändert. Immer mit dem gleichen Ergebnis.
Hier mal der Code der beiden Methoden aus der SQLiteOpenHelper-Subklasse:
Hier der Code, der auf diese Methoden zugreift:
Wär echt geil, wenn mir da jemand auf die Sprünge helfen könnte...
ich habe folgendes Problem zu lösen:
Ich entwickle eine App, die Dartsturniere verwalten soll. Ich möchte gerne jedem angemeldeten Spieler App-intern eine eindeutige ID in Form eines Integer-Wertes verpassen.
Die Idee meiner Lösung ist diese:
Ich habe in der SQLite-Datenbank eine Tabelle user_id angelegt, die nur eine Spalte user_id_counter hat. Beim erstmaligen anlegen (onCreate()) der Datenbank wird ein Datensatz angelegt, der den Wert 1 enthält:
Code:
private static final String INIT_USER_ID = "INSERT INTO user_id VALUES ('1')";
db.execSQL(INIT_USER_ID);
Das funktioniert auch, aber leider nur einmal Sobald die ID in id_counter den Wert 2 hat, funktioniert das nicht mehr. Warum???
Ich habe jetzt so ziemlich alles, was mir eingefallen ist am update-statement geändert. Immer mit dem gleichen Ergebnis.
Hier mal der Code der beiden Methoden aus der SQLiteOpenHelper-Subklasse:
Code:
public int getUserId()
{
// Open readable db
SQLiteDatabase db = getReadableDatabase();
// Abfrage der userID
Cursor result = db.rawQuery("SELECT * FROM user_id", null);
result.moveToFirst();
int userIdIdx = result.getColumnIndex(DatabaseHelper.USER_ID_FIELD_NAME);
int userId = result.getInt(userIdIdx);
return userId;
}
public void updateUserId(int userId)
{
SQLiteDatabase db = getWritableDatabase();
ContentValues cvalues = new ContentValues();
cvalues.put(USER_ID_FIELD_NAME, userId);
String args = "user_id_counter IS NOT NULL";
db.update(TABLE_NAME_USER_ID, cvalues, args, null);
}
Hier der Code, der auf diese Methoden zugreift:
Code:
public void addPlayerBtnClicked(View view)
{
// read username
username = editTextUsername.getText().toString();
// read pub
pub = editTextPub.getText().toString();
if(username.length() == 0) // No username-input
{
// Toast-notification no input
text = getResources().getString(R.string.toast_message_username_missing);
Toast.makeText(context, text, duration).show();
}
else // Username-input is not null
{
db = new DatabaseHelper(context);
// UserId zuweisen
userId = db.getUserId();
// Insert player into DB
db.insertUserIntoDB(userId, username, pub);
// UserId update
userId++;
db.updateUserId(userId);
}
Wär echt geil, wenn mir da jemand auf die Sprünge helfen könnte...