0

以下のコードクエリデータベースを使用すると、結果を取得できませんが、コンソールで sql コマンドを使用して結果を取得できます。

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();

プログラムをデバッグし、db.rawquery( * )を実行した後、カーソルの mCount=-1 と mStackTrace=DatabaseObjectNotClosedException を見つけました。

以下はクラス DBHelper です: public class DBHelper extends 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");
    }

}
4

1 に答える 1

1

簡単な質問で申し訳ありませんが、もう行を追加しましたか?

編集:

cursor.moveToFirst()返されたデータにアクセスする前に呼び出す必要があります。

于 2012-04-06T15:35:12.377 に答える