こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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は明示的に書かないといけないのでしょうか。
分かりずらいかもしれませんが、エラーを出さない方法をご教示お願いいたします。
よろしくお願いいたします。

投稿日時 - 2011-12-08 19:23:52

QNo.7178839

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

ログがよめないけど、
エラーログの内容を理解してその対応をする。
以上

投稿日時 - 2011-12-09 14:25:40

あなたにオススメの質問