0

我有数据库类。该类及其构造函数如下所示。

    public class LatLogDBAdapter {   

     private static class DatabaseHelper extends SQLiteOpenHelper {

          DatabaseHelper(Context context) {
              super(context, DATABASE_NAME, null, DATABASE_VERSION);
          }
}

我想在静态方法中使用数据库。所以我声明为private static LatLogDBAdapter dbHelper;. 然后当我初始化时,我有问题。dbHelper = new LatLogDBAdapter(this); dbHelper = new LatLogDBAdapter(DetailMapView.this);使编译错误。如何在静态方法中使用它?

4

1 回答 1

0

如果您想创建返回 dbhelper 的静态方法,我建议您创建普通子类,SQLiteOpenHelper并在此类中创建将返回新实例的公共静态方法。这听起来也是使用设计模式的好理由Singleton

更新:

我的意思是我想在另一个 java 类中使用这个数据库类。该类具有静态方法并使用数据库。

在这里,我为您创建了基本的代码片段:

public class AdapterWrapper {

    private static SQLiteOpenHelper instance;

    public static SQLiteOpenHelper getInstance(Context c) {
        if (instance == null) {
            instance = new DatabaseHelper(c);
        }
        return instance;
    }

    private static class DatabaseHelper extends SQLiteOpenHelper {

        private static final String DB_NAME = "Example";
        private static final int DB_START_VERSION = 1;

        public DatabaseHelper(Context cntx) {
            super(cntx, DB_NAME, null, DB_START_VERSION);
        }

        @Override
        public void onCreate(SQLiteDatabase db) {
            // creating tables
        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int old, int new) {
            /// drop an upgrading db
        }
    }
}
于 2013-03-31T08:37:22.700 回答