FavoriteDatabaseHelper,存储favorite数据,到sqlite数据库。
sqliteOpenHelper是一个帮助管理数据库和版本的工具类。
通过继承并重载方法,快速实现了我们自己的Favorite表的CRUD。
怎么感觉和fileOperationHelper类似,仍然是CRUD,只不过1个是数据库中的,1个是文件的。
代码比较简单,每个函数的功能比较单一清晰,CRUD,主要是使用androID.database.sqlite.sqliteDatabase *** 作sqlite数据库。
package net.micode.fileexplorer.util;import androID.content.ContentValues;import androID.content.Context;import androID.database.Cursor;import androID.database.sqlite.sqliteDatabase;import androID.database.sqlite.sqliteOpenHelper;//存储favorite数据,到数据库//sqliteOpenHelper是一个帮助管理数据库和版本的工具类。//通过继承并重载方法,快速实现了我们自己的Favorite表的CRUD。//怎么感觉和fileOperationHelper类似,仍然是CRUD,只不过1个是数据库中的,1个是文件的。public class FavoriteDatabaseHelper extends sqliteOpenHelper { //下面6个字段是数据库的名字和版本号、表的名字和3个字段 private final static String DATABASE_name = "file_explorer"; private final static int DATABASE_VERSION = 1; private final static String table_name = "favorite"; public final static String FIELD_ID = "_ID"; public final static String FIELD_Title = "Title"; public final static String FIELD_LOCATION = "location"; private boolean firstCreate; //数据库变化的时候,会通知其它监听器 private FavoriteDatabaseListener mListener; private static FavoriteDatabaseHelper instance; public interface FavoriteDatabaseListener { voID onFavoriteDatabaseChanged(); } //这个构造方法和下面的静态获得实例的方法,不太和谐啊~ //乍一看,以为是单例模式呢,实则不是~ public FavoriteDatabaseHelper(Context context,FavoriteDatabaseListener Listener) { super(context,DATABASE_name,null,DATABASE_VERSION); instance = this; mListener = Listener; } //这个地方感觉只是方便存储了一个类的实例,但不能保证这个类只有1个实例 public static FavoriteDatabaseHelper getInstance() { return instance; } //数据库创建,1个sql public voID onCreate(sqliteDatabase db) { String sql = "Create table " + table_name + "(" + FIELD_ID + " integer primary key autoincrement," + FIELD_Title + " text," + FIELD_LOCATION + " text );"; db.execsql(sql); firstCreate = true; } //升级的时候,直接删除以前的数据库,如果存在的话 //版本号,没用上啊 public voID onUpgrade(sqliteDatabase db,int oldVersion,int newVersion) { String sql = " DROP table IF EXISTS " + table_name; db.execsql(sql); onCreate(db); } //是否为第1次创建 public boolean isFirstCreate() { return firstCreate; } //判断1个文件路径是否已经存在,或者说是否是Favorite文件 public boolean isFavorite(String path) { String selection = FIELD_LOCATION + "=?"; String[] selectionArgs = new String[] { path }; sqliteDatabase db = this.getReadableDatabase(); Cursor cursor = db.query(table_name,selection,selectionArgs,null); if (cursor == null) return false; boolean ret = cursor.getCount() > 0; cursor.close(); return ret; } //获得Favorite表的游标 public Cursor query() { sqliteDatabase db = this.getReadableDatabase(); Cursor cursor = db.query(table_name,null); return cursor; } //插入一条记录 public long insert(String Title,String location) { if (isFavorite(location)) return -1; sqliteDatabase db = this.getWritableDatabase(); long ret = db.insert(table_name,createValues(Title,location)); mListener.onFavoriteDatabaseChanged(); return ret; } //根据ID,删除一条记录。如果需要,然后通知相关监听器 public voID delete(long ID,boolean notify) { sqliteDatabase db = this.getWritableDatabase(); String where = FIELD_ID + "=?"; String[] whereValue = { Long.toString(ID) }; db.delete(table_name,where,whereValue); if (notify) mListener.onFavoriteDatabaseChanged(); } //根据位置删除1条记录,一定通知相关监听器 public voID delete(String location) { sqliteDatabase db = this.getWritableDatabase(); String where = FIELD_LOCATION + "=?"; String[] whereValue = { location }; db.delete(table_name,whereValue); mListener.onFavoriteDatabaseChanged(); } //更新1条记录 public voID update(int ID,String Title,String location) { sqliteDatabase db = this.getWritableDatabase(); String where = FIELD_ID + "=?"; String[] whereValue = { Integer.toString(ID) }; db.update(table_name,location),whereValue); mListener.onFavoriteDatabaseChanged(); } private ContentValues createValues(String Title,String location) { ContentValues cv = new ContentValues(); cv.put(FIELD_Title,Title); cv.put(FIELD_LOCATION,location); return cv; }}总结
以上是内存溢出为你收集整理的小米开源文件管理器MiCodeFileExplorer-源码研究(7)-Favorite收藏管理和SQLite数据库CRUD全部内容,希望文章能够帮你解决小米开源文件管理器MiCodeFileExplorer-源码研究(7)-Favorite收藏管理和SQLite数据库CRUD所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)