2012-04-06 12 views
0

Wenn ich unter Code-Abfrage-Datenbank verwenden, kann ich kein Ergebnis erhalten, aber ich kann Ergebnisse über SQL-Befehl auf der Konsole erhalten.Kann keine Ergebnisse mit Abfrage/Rawquery # SQLite #

DBHelper dbHelper = new DBHelper(SampleActivity.this, "contents.db", null, 1); 
SQLiteDatabase db = dbHelper.getWritableDatabase(); 
//Cursor cursor = db.query("ContentsTable", new String[] { "title" }, "id<10", null, null, null, null); 
Cursor cursor = db.rawQuery("select title from ContentsTable", null); 
db.close(); 
cursor.close(); 

debuggen ich das Programm und fand Cursors MCOUNT = -1 und mStackTrace = DatabaseObjectNotClosedException nach db.rawquery läuft (*), genau wie das Foto zeigte: http://flic.kr/p/bw9P2o

Below Klasse DBHelper ist: public class DBHelper erweitert SQLiteOpenHelper {

public DBHelper(Context context, String name, CursorFactory factory, int version) { 
     super(context, name, factory, version); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     String createTable = "create table ContentsTable(id int, title varchar(100))"; 
     db.execSQL(createTable); 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     System.out.println("Update Database"); 
    } 

} 

Antwort

1

die einfache Frage Vergib aber haben Sie noch hinzugefügt Reihen?

EDIT:

Sie haben cursor.moveToFirst() aufrufen, bevor die zurückgegebenen Daten zugreifen.

+0

ja, weil ich Ergebnisse über sqlite3-Befehle erhalten kann (wählen Sie Titel von ContentsTable) auf der Konsole – Jake

+0

Ok, schließen Sie den Cursor zuerst, dann die db. Oder besser: Versuchen Sie in Ihrer Aktivität startManagingCursor() zu verwenden und sorgen Sie sich nie darum, es zu schließen. – Sam

+0

Alle Informationen wurden nach dem Ausführen erhalten: Cursor cursor = db.rawQuery ("Titel aus ContentsTable auswählen", null); no run db.close() oder cursor.close(); – Jake

Verwandte Themen