ID vom letzten Datenbankeintrag finden

  • Hy!


    Ich trage einen Datensatz mittels folgendem Code ein:

    Code
    myDB.execSQL("INSERT INTO " +MY_DB_TABLE + "(company, surname, firstname, adress, postcode, city, phone, email) "+"VALUES ('"+DataCompany.getText().toString()+"',"+"'"+DataSurname.getText().toString()+"',"+"'"+DataFirstname.getText().toString()+"',"+"'"+DataAdress.getText().toString()+"',"+"'"+DataPostcode.getText().toString()+"',"+"'"+DataCity.getText().toString()+"',"+"'"+DataPhone.getText().toString()+"',"+"'"+DataEmail.getText().toString()+"');");


    Gibt es eine elegantere Lösung die neu angelegte ID des Datensatzes abzufragen, ohne eine SELECT anweisung mit den eben eingetragenen Daten zu machen?


    In MYSQL wäre der Befehl ja mysql_insert_id() glaube ich, wenn autoincrement verwendet wurde...


    greets

  • Danke auf jeden Fall schon mal für den Tip! Komischerweise bekomme ich bei der id -1 zurück

    Code
    Cursor id_cursor = myDB.rawQuery("SELECT last_insert_rowid()",null);
    startManagingCursor(id_cursor);
    long new_id = id_cursor.getColumnIndex("_id");
    Toast.makeText(getApplicationContext(), "id: "+new_id, Toast.LENGTH_SHORT).show();


    greets

  • Ich habe mir jetzt einmal mittels

    Code
    String ColumnCompany[] = id_cursor.getColumnNames();


    Die vorhandenen Spaltennamen anzeigen lassen. Dabei habe ich "last_insert_row()" zurückbekommen... also arbeitet die Funktion doch nicht wie gewünscht.


    Vlt git's weitere Anregungen für mein Problemchen :)
    greets

  • Durch eine zusätzliche Funktion bin ich nun auf eine Alternativlösung gestoßen. Ich füge an jedem Datensatz nun das aktuelle Datum ein. Somit kann ich jeden Datensatz eindeutig identifizieren, da die Wahrscheinlichkeit auch sehr gering ist, dass wenn mehrere Benutzer auf der DB arbeiten, die gleiche Datumsinformation erzeugt wird.


    Hier der Code:

    Code
    myDB = this.openOrCreateDatabase(MY_DB_NAME, MODE_PRIVATE, null);
    Date d = new Date();
    String current_date = (String)DateFormat.format("yyyy/MM/dd kk:mm:ss", d.getTime());


    Dann habe ich noch eine kleine Routine eingebaut, falls ein neuer Datensatz erzeugt wird oder ein Datensatz nur editiert werden muss.


    Die Formatierung des Codes sei an dieser Stelle bitte entschuldigt. Die hab ich nicht ausm Editor übernommen ;)
    greets

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!