2010-11-19 7 views
2

Ich habe eine DatabaseHelper-Klasse, die SQLiteOpenHelper erweitert, was ist eine gute Übung zur Verwendung des DBHelper, um Datenextraktionen durchzuführen?Was ist eine gute Praxis für die Verwendung eines DBHelper (SQLite) auf Android-Anwendungen

In meiner DatabaseHelper-Klasse habe ich eine Methode, mit der ich die Ergebnisse einer Abfrage wie "Select * FROM ....." abrufen kann. Die Ergebnisse werden von vielen anderen Klassen verwendet.

Beispiel:

Cursor getAllWhitelist(){ 
    SQLite Database db=this.getWritableDatabase(); 
    Cursor cur = db.rawQuery("Select * from WhiteList"); 
    return cur; 
} 

Soll ich einen Cursor zu diesem Zeitpunkt zurückkommen? Ist es empfehlenswert? Oder sollte ich eine ArrayList oder ähnliches zurückgeben?

Wie geht es euch?

Antwort

1

Was i verwendet wird, um den Wert in einem Objekt oder in einem Arraylist von Objekt gespeichert und zurück, dass
dies Siehe link

Dank @Austyn Mahoney, wie er gesagt, dass wir Cursor zurückkehren können, wenn wir startManagingCursor verwenden . Diese Methode ermöglicht es der Aktivität, den Lebenszyklus des gegebenen Cursors basierend auf dem Lebenszyklus der Aktivität zu verwalten.

+0

Das Zurückgeben eines Cursors ist in Ordnung, Sie müssen nur sicherstellen, dass Sie einen 'startManagingCursor (cursor)' -Aufruf in Ihrer Aktivität hinzufügen, sobald der Cursor an ihn zurückgegeben wurde. Sie benötigen einen Cursor, der nicht geschlossen ist, wenn Sie ihn in einem 'SimpleCursorAdapter' verwenden möchten. –

+0

Danke @Austyn Mahoney für diese Information. Ich habe meine Antwort bearbeitet. –

0

Die bewährte Methode besteht darin, eine Ergebnisliste zu erstellen und den Cursor und die Datenbank zu schließen, um die Verbindungszeit zu minimieren. Andernfalls können Sie die Verbindung aufgrund von Einschränkungen schließen. Dies wird für Ihre Ergebnisliste schlecht sein.

+0

Wäre die Ausnahme dazu, wenn Sie den Cursor für einen ListView-Adapter benötigen? Das Beispiel von Google zeigt, dass hierfür ein Cursor verwendet wird. – Thomas

+0

die Sache ist, dass der Cursor nicht notwendig ist, mit der Datenbank verbunden ist. Cursor ist eine allgemeine Schnittstelle zum Abrufen von Daten von einem beliebigen Inhaltsanbieter. –

+0

@Thomas würdest du dich interessieren das Teilen ein Ausschnitt dieses Beispiels? –

Verwandte Themen