这是站长在做SMS开发时做的相关数据库。在这里SQLiteOpenHelper被封闭到了一个SmsDBAdapter类中,在创建SmsDBAdapter时会生成SQLiteOpenHelper对象mDbHelper。SmsDBAdapter中主要是放置SMS的数据库接口的,SMS的增删改查等相关函数都在这个类里面。
public class SmsDBAdapter { private DatabaseHelper mDbHelper; private SQLiteDatabase mDb; private final Context context; private class DatabaseHelper extends SQLiteOpenHelper { DatabaseHelper(Context context) { //第三个参数CursorFactory指定在执行查询时获得一个游标实例的工厂类,设置为null,代表使用系统默认的工厂类 super(context, context.getString(R.string.DB_NAME), null, Integer .parseInt(context.getString(R.string.DB_VERSION))); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(context.getString(R.string.CREATE_BLACK_LIST)); ... } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { } } public SmsDBAdapter(Context ctx) { this.context = ctx; mDbHelper = new DatabaseHelper(context); } public SmsDBAdapter getWritableDatabase() throws SQLException { mDb = mDbHelper.getWritableDatabase(); return this; } public SmsDBAdapter getReadableDatabase() throws SQLException { mDb = mDbHelper.getReadableDatabase(); return this; } public void closeSmsDB() { mDbHelper.close(); } //下面为SMS处理的接口 public int deleteWasteSms(long id) {
if (id == -1)
return mDb.delete(context.getString(R.string.TN_WASTE_SMS), null,
null);
return mDb.delete(context.getString(R.string.TN_WASTE_SMS),
CV.CN_SMS_ID + "=" + id, null);
} ... }
SmsDBAdapter mDbHelper = new SmsDBAdapter(this); mDbHelper.getReadableDatabase(); cur = mDbHelper.getCommonNum(null);//调用mDbHelper中的方法 startManagingCursor(cur); ... mDbHelper.closeSmsDB();
在实际的应用中,SmsDBAdapter会是自定义Application中的一成员,这样在程序运行时SmsDBAdapter就有现成对象可以用了,不用每次创建了。