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???
 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???
 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...
 
						