SQLite in Android zu bekommen RowID

Ich bin erstellen einer app zum aufzeichnen von Zuweisungen für die verschiedenen Klassen. Jede Klasse hat seine eigene einzigartige ID, so werden die Aufgaben aufgeführt, die für jede Klasse nicht überschneiden, in anderen Klassen. Hier ist eine Methode, die ich auf die rowid für eine bestimmte Klasse.

public int getIdFromClassName(String className){
    String query = "SELECT rowid FROM " + CLASSES_TABLE_NAME + " WHERE " + CLASSES_COLUMN_NAME + " = '" + className + "'";
    SQLiteDatabase db = this.getReadableDatabase();
    Cursor res = db.rawQuery(query, null);
    return res.getColumnIndex("id");
}

Jedoch, dies immer gibt den Wert -1 zurück.

Irgendwelche Gedanken auf, was zu ändern zurück die richtige rowid-Wert?

EDIT:

@Override
public void onCreate(SQLiteDatabase db) {
    //TODO Auto-generated method stub
    db.execSQL(
            "create table " + CLASSES_TABLE_NAME + " " +
                    "(id integer primary key, " + CLASSES_COLUMN_NAME + " text)"
    );
    db.execSQL(
            "create table " + ASSIGNMENTS_TABLE_NAME + " " +
                    "(id integer primary key, " + ASSIGNMENTS_COLUMN_NAME + " text, " + ASSIGNMENTS_COLUMN_TOTAL_POINTS
                    + " INTEGER, " + ASSIGNMENTS_COLUMN_CLASS_ID + " INTEGER)");

}
haben Sie versucht das? return res.getString( res.getColumnIndex("id") );
Das würde einen String zurückgeben, aber ich bin auf der Suche nach der id in der form eines int
es hängt davon ab...die Daten geben, die Sie für den id...ich glaube, Sie können auch getInt ..wenn Ihr Datentyp integer
wenn Sie noch nicht gelöst..können Sie überprüfen, res.moveToFirst () - Methode
wenn Sie nicht wissen, welche Spalten Ihre Cursor hält call DatabaseUtils.dumpCursor

InformationsquelleAutor Kinoscorpia | 2016-01-15

Schreibe einen Kommentar