0

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

我应该把线放在后面 db.close() list... ??????这是我要理解的问题....谢谢!

4

1 回答 1

1

每次您想做某事时都必须不断地重新连接到数据库是低效的,因此从每一行中删除 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 方法,该方法在 Activity/Class 完成使用它后关闭与数据库的连接。

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 更好,这样您就可以访问应用程序范围的数据库,而无需每次都重新建立连接的低效开销。

于 2013-04-07T15:06:22.117 回答