如何在android中最好地处理数据库?

如何在android中最好地处理数据库?,android,performance,static,Android,Performance,Static,我有一个android DB适配器类,定义如下: public class DBAdapter { private final Context context; private DatabaseHelper DBHelper; private SQLiteDatabase db; public DBAdapter(Context ctx) { this.context = ctx; DBH

我有一个android DB适配器类,定义如下:

public class DBAdapter
{                 
    private final Context context;
    private DatabaseHelper DBHelper;
    private SQLiteDatabase db;

    public DBAdapter(Context ctx)
    {
        this.context = ctx;
        DBHelper = new DatabaseHelper(context);
    }

    private static class DatabaseHelper extends SQLiteOpenHelper
    {
        DatabaseHelper(Context context)
        {
            super(context, DATABASE_NAME, null, DATABASE_VERSION);
        }

        @Override
        public void onCreate(SQLiteDatabase db)
        {
            db.execSQL(DATABASE_CREATE_PORTF);
            db.execSQL(DATABASE_CREATE_SERIES);
        }

        public void reset(SQLiteDatabase db) {
            db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE_PORTF);
            db.execSQL("DROP TABLE IF EXISTS " + DATABASE_TABLE_SERIES);
            onCreate(db);
        }       
    }

    // actual table stuff comes here. 
现在,在代码的后面部分,在另一个类中,我循环不同的项,对于每个项,我需要更新数据库中的表。我可以想出两种方法:

void updateDatabase(item) {
    DBAdapter db = new DBAdapter(this);
    db.open();
    // update tables, rows, whatever
    db.close();
}

for (Item item: myItems) {
     updateDatabase(item);
}
或者我可以这样做:

void updateDatabase(db, item) {
    // update tables, rows, whatever
}

DBAdapter db = new DBAdapter(this);
db.open();
for (Item item: myItems) {
     updateDatabase(db, item);
}
db.close();

我猜第二条路就是要走的路。但是在这种情况下,我必须传递
db
对象,不仅仅是一个级别,而是三个级别。或者有没有另一种“简单”而有效的方法来处理这个问题?(我所说的“简单”是指避免使用不重要的/管理代码行)。

就我个人而言,我使用第一种方法,因为它可以保持我的活动/片段类代码干净整洁。您还可以在onCreate中打开数据库,并在onPause或onDestroy中关闭它。您也可以使用第一个代码。但这会严重影响性能吗?我不知道这在幕后是如何处理的,,,我不认为有任何理由每次都打开和关闭数据库。我会选择第二种解决方案,因为打开它一次,进行更改,然后关闭它似乎更有效。