小米开源文件管理器MiCodeFileExplorer-源码研究(7)-Favorite收藏管理和SQLite数据库CRUD

小米开源文件管理器MiCodeFileExplorer-源码研究(7)-Favorite收藏管理和SQLite数据库CRUD,第1张

概述FavoriteDatabaseHelper,存储favorite数据,到SQLite数据库。 SQLiteOpenHelper是一个帮助管理数据库和版本的工具类。 通过继承并重载方法,快速实现了我们自己的Favorite表的CRUD。 怎么感觉和FileOperationHelper类似,仍然是CRUD,只不过1个是数据库中的,1个是文件的。 代码比较简单,每个函数的功能比较单一清晰,CRUD,
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所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1169002.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存