Frage

Ich erstelle eine Anwendung, und ich habe Probleme mit Cursor. Ich habe eine SQLiteDatabase, die mir Cursor zurückgibt, wenn ich versuche, die Werte mit dieser Funktion zu holen:

public Cursor fetchOption(long rowId) throws SQLException {

    Cursor mCursor = mDb.query(true, DATABASE_TABLE, new String[] {KEY_ROWID,
        KEY_TITLE, KEY_BODY}, KEY_ROWID + "=" + rowId, null,
        null, null, null, null);
    if (mCursor != null) {
        mCursor.moveToFirst();
    }
    return mCursor;

}

Ich weiß nicht, wie der Wert des Feldes in der Cursor zu erhalten. Wenn ich das in etwa so:

String a = mOptionDb.fetchOption(0).getColumnName(0).toString();
String b = mOptionDb.fetchOption(0).getColumnName(1).toString();
String c = mOptionDb.fetchOption(0).getColumnName(2).toString();

ich nur den Namen der Spalten (_id, title, body) erhalten, aber nicht die Werte. Alle Vorschläge, wie dies zu erreichen?

War es hilfreich?

Lösung

Ich denke, Sie Überprüfung auf null vergessen.

Stattdessen prüfen, ob es Daten gibt, und dann die Spalten zuzugreifen den Cursor mit:

Cursor cursor = fetchOption(0);

if (cursor.moveToFirst()) // data?
   System.out.println(cursor.getString(cursor.getColumnIndex("title")); 

cursor.close(); // that's important too, otherwise you're gonna leak cursors

Es könnte auch sinnvoll sein, ein Android-Tutorial zu lesen. Der Notizblock Tutorial scheint die Rechnung zu passen: http://developer.android.com /guide/tutorials/notepad/index.html

Andere Tipps

Sie können die Cursor der get* Methoden verwenden, um Werte aus dem Ergebnis abrufen:

long id = cursor.getLong(cursor.getColumnIndex("_id"));
long title = cursor.getString(cursor.getColumnIndex("title"));
...

Bessere Praxis ist offensichtlich Konstanten zu verwenden (oft von ContentProviders zur Verfügung gestellt) anstelle von Anrufen mit fest codierten Strings getColumnIndex.

Sie können diesen Mechanismus verwenden.

Cursor record=db.test(finalDate);     
if(record.getCount()!=0){
    if(record.moveToFirst()){
        do{               
            Imgid1=record.getString(record.getColumnIndex(Database.PHOTO));                
        }while(record.moveToNext());                          
    } 
    record.close();        
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top