SQLiteは明示的に閉じる
いつもお世話になっております。
androidアプリの開発を行っています。
まだまだ勉強不足なのですが、ご教示お願いいたします。
下記のようにSQLiteでデータの操作をしています。
activityは詳細画面のような感じで、違うnameで複数アクセスされます。
close()を実行すると、closeしていません。みたいなエラーがでて、
close()を実行しないと、selete()が実行できなくなってしまいます。
activity.java
------------------------------
SQLiteHelper dbHelper = new SQLiteHelper(getApplicationContext());
SQLiteDatabase db = dbHelper.getWritableDatabase();
dbHelper.select(db);
database.java
------------------------------
public class DatabaseHelper extends SQLiteOpenHelper {
public SQLiteHelper(Context context) {
super(context, DATABASE_NAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE " + TABLE_NAME + " (_id integer primary key autoincrement, name text not null)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
onCreate(db);
}
public select(SQLiteDatabase db, String name) {
String sql = "SELECT * FROM " + TABLE_NAME + " WHERE name=" + name;
Cursor cursor = db.rawQuery(sql, null);
// ↓これが原因かと。
db.close();
}
}
closeは明示的に書かないといけないのでしょうか。
分かりずらいかもしれませんが、エラーを出さない方法をご教示お願いいたします。
よろしくお願いいたします。
お礼
お考えの通りライブラリがおかしかったみたいです・・・