我创建了一个SQlite数据库。从我的DB写入或读取没有问题。在我的DBHandler.class中,我添加了一些方法来读取一列例如。每个方法都有dbHandler.close()行。如果我想从DBHandler.class调用一个方法,那么我必须做类似的事情:
... DBHandler db = new DBHandler(this); ... list = db.getAllBlock()
我放了线
db.close()
后
list...
?????
这是我的理解......谢谢!
答案 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更好,然后您可以拥有应用程序范围的数据库访问,而不会在每次需要时重新建立连接的低效开销。