了解SQlite close()

时间:2013-04-07 14:44:20

标签: android sqlite

我创建了一个SQlite数据库。从我的DB写入或读取没有问题。在我的DBHandler.class中,我添加了一些方法来读取一列例如。每个方法都有dbHandler.close()行。如果我想从DBHandler.class调用一个方法,那么我必须做类似的事情: ... DBHandler db = new DBHandler(this); ... list = db.getAllBlock()

我放了线 db.close() list... ????? 这是我的理解......谢谢!

1 个答案:

答案 0 :(得分:0)

每次要执行某些操作时不断重新连接到数据库是低效的,因此从每行中删除close()语句并创建DB Handler类的单个实例:

拥有一个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();
}

实例,其中Activity / Class正在使用它,然后在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更好,然后您可以拥有应用程序范围的数据库访问,而不会在每次需要时重新建立连接的低效开销。