何かを行うたびに常にデータベースに再接続する必要があるのは非効率的です。そのため、各行から close() ステートメントを削除し、DB ハンドラー クラスの単一のインスタンスを作成します。
単一の DBHandler を持つ方がはるかに優れています
DBHandler db;
public Activity/Class Constructor()
{
DBHandler db = new DBHandler(this);
}
private void DoSomethingWithDatabase()
{
db.doSomethingHere();
}
private void DoSomethingWithDatabaseAgain()
{
db.doSomethingThere();
}
public void Activity/ClassClose()
{
db.CloseDatabase();
}
アクティビティ/クラスがそれを使用しているインスタンス内で、アクティビティ/クラスがそれを使用し終わった後にデータベースへの接続を閉じる DBHandler に close メソッドがあります。
public class DBHandler
{
private static SQLiteDatabase m_DB;
public DBHandler open() throws android.database.SQLException
{
m_DB = m_DBHelper.getWritableDatabase();
}
public void doSomethingHere()
{
m_DB.getAllBlock()
}
public void doSomethingThere()
{
m_DB.getAllSomethingElse()
}
public void CloseDatabase()
{
m_DB.close();
}
}
実際、DBHandler を Singleton として使用すると、必要なたびに接続を再確立するという非効率的なオーバーヘッドなしで、アプリケーション全体のデータベース アクセスを行うことができます。