如何扩展SQLiteDatabase类?

Chr*_*ian 4 java sqlite android

我想扩展SQLiteDataBase类,以便能够覆盖一些方法(比如rawQuery,execSQL,...)以及执行有关查询执行时间的一些统计信息.

我称之为这些功能的地方有数百个.因此,从基类SQLiteDatabase创建派生类将对我有所帮助!

问题是:在扩展SQLiteDataBase时,它无法从超类中找到任何构造函数.

import android.database.sqlite.SQLiteDatabase;

public class MySQLiteDatabase extends SQLiteDatabase
{

    MySQLiteDatabase()
    {
        super(); // <<<--- can't find any visible constructor
    }

}
Run Code Online (Sandbox Code Playgroud)

Luk*_*rog 10

我称之为功能的地方有数百个.因此,从基类SQLiteDatabase创建派生类将对我有很大帮助!

你不能扩展SQLiteDatabase它的声明final,你不能final在java中扩展一个类.

另一种方法是创建一个"包装器" SQLiteDatabase,它将SQLiteDatabase使用其方法复制类,并在包装​​器方法中插入测量逻辑:

public class SQLiteDatabaseWrapper {

    private SQLiteDatabase mDatabase;

    public void initDatabase() {
      //obtain the database here and assign it to mDatabase 
    }

    // replicate the SQLiteDatabase methods 
    public void execSQL(String sql) {
       //insert whatever logic you have for measurement
       // do the measurement
       mDatabase.execSQL(sql); 
    }
    // other methods from SQLiteDatabase 
}
Run Code Online (Sandbox Code Playgroud)