范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

开源一个轻量级无侵入式android数据库自动升级的管理类

  SpeSqliteManager4Android
  介绍
  一个轻量级无侵入式管理android数据库自动升级的管理类(支持SQLiteOpenHelper、room(编码中))
  实际导入代码
  核心代码 1. 数据库配置文件dbupdate.json {   "dbName": "localdb",   "dbVersion": 5 ,   "dbTables": [     {       "tableName":"dbconfig",       "columns":[         {           "key": "dbversion",           "keyType": "TEXT"         },         {           "key": "dbname",           "keyType": "TEXT"         },         {           "key": "dbtables",           "keyType": "TEXT"         }       ]     },     {       "tableName":"teacher",       "columns":[         {           "key": "id",           "keyType": "INTEGER PRIMARY KEY AUTOINCREMENT"         },         {           "key": "name",           "keyType": "TEXT"         },         {           "key": "age",           "keyType": "TEXT"         },         {           "key": "sex",           "keyType": "TEXT"         }       ]     }   ] }  2.开始调用 SpeSqliteDBService.getInstance(this);  3.数据库相关模型 public class SpeSqliteColumnSettingModel {     /**      * key名      */     public String key;      /**      * 该key的在sql中的key字段修饰,比如INTEGER PRIMARY KEY AUTOINCREMENT或TEXT      */     public String keyType; }  public class SpeSqliteSettingModel {     /**      * 数据库名      */     public String dbName;      /**      * 数据库版本号      */     public int dbVersion;      /**      * 所有表数组      */     public ArrayList dbTables; }  public class SpeSqliteTableSettingModel {     /**      * 表名      */     public String tableName;      /**      * 当前表字段设计      */     public ArrayList columns;      /**      * 是否被索引过:代表是否在新表里被删除了      */     public  boolean indexed;  }  4.SQLiteOpenHelper子类,可以看到改完后该类非常干净。 public class SpeSqliteDBService extends SQLiteOpenHelper {     private static final String TAG     = "SpeSqliteDBService";     private static SpeSqliteDBService instance  = null;     private Context context = null;     private SQLiteDatabase db = null;     public static synchronized SpeSqliteDBService getInstance(Context context) {         if (instance == null){             synchronized (SpeSqliteDBService.class){                 if (instance == null){                     instance = new SpeSqliteDBService(context);                     instance.context = context;                     instance.db = instance.getWritableDatabase();                 }             }         }         return instance;     }      public SpeSqliteDBService(Context context) {         super(context,SpeSqliteUpdateManager.getInstance().init(context).currentAppDBSetting().dbName,                 null,SpeSqliteUpdateManager.getInstance().init(context).currentAppDBSetting().dbVersion);     }      @Override     public void onCreate(SQLiteDatabase db) {         SpeSqliteUpdateManager.getInstance().create(db);     }      @Override     public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion) {          SpeSqliteUpdateManager.getInstance().upgrade(db);     } }  5.SpeSqliteUpdateManager 负责针对本地db的创建、新建表、表字段升级、删除表,通过配置的方式去升级数据库,减少代码的改动,核心思想:以静制动  public class SpeSqliteUpdateManager {     /**      *主app的context      */     private Context appContext = null;      /**      *本地db中的配置项      */     private SpeSqliteSettingModel localDBSetting = null;      /**      *当前app中assets的配置项      */     private SpeSqliteSettingModel currentAppDBSetting = null;      private final  Gson gson = new Gson();      private String currentDBJson = null;      private static final String kDBJsonName  = "dbupdate.json";      private SpeSqliteUpdateManager() {      }      public static SpeSqliteUpdateManager getInstance() {         return SingletonClassInstance.instance;     }      private static class SingletonClassInstance {         private static final SpeSqliteUpdateManager instance = new SpeSqliteUpdateManager();     }      public SpeSqliteUpdateManager init(Context context){         this.appContext =context;         return this;     }      /**      * 数据库第一次创建时的调用函数      * @param db db      */     public void create(SQLiteDatabase db){         SpeSqliteSettingModel currentDBModel = SpeSqliteUpdateManager.getInstance().currentAppDBSetting();         for(int i=0;i=_old.columns.size()){                 SpeSqliteColumnSettingModel column = _new.columns.get(i);                 String sql = " alter table "+_old.tableName+" add column ";                 sql+=column.key;                 sql+=" ";                 sql+= column.keyType;                 executeSQL(db,sql);             }         }     }      /**      * 新增表      * @param db db      * @param table 表配置      */     private void createTableSQL(SQLiteDatabase db,SpeSqliteTableSettingModel table){         String sql = " create table if not exists "+table.tableName+" (";         for(int j=0;j();             for(int i=0;i
  运行效果   后续工作 :   1.完成针对room数据的支持,避免每次写Migration升级函数。   喜欢的朋友可以移步至gitee查看源码:SpeSqliteManager4Android: 一个用来管理android数据库自动字段升级的管理类
秋季,穿对这4件衣服,更显气质嗨,各位小仙女们,大家好呀!入秋后,女孩子们又该疯狂买买买了吧?其实,好衣品并不是看衣服数量而定的,所以,在进入秋季后,衣服要选精不选多!这个秋季,穿对下面这4件衣服就行了,更显气立秋后,奶奶衫又卷土重来了!学会这么搭,时尚减龄还有气质把握你造型形象品质的含义,可以呈现出你跟独有的风格。流光溢彩的单品组合,本身并不具有高级感,但通过合适的匹配与穿达者加持,人衣合一的隆重感,必将塑成审美的优势。对于单品的精准则选,越南时尚村的新兵,鱼尾裙搭配独特的花瓣块,更显气质LuongThuyLinh小姐KhanhVan歌手MinhHang许多越南明星都喜欢设计师ThuongGiaKy的晚礼服。越南时尚村的新兵,得到了MinhHang和众多选美皇后的青郭德纲老婆现身引人围观!穿短裤身上多处纹身,手上一个包6万块近日,有网友在个人社交平台晒出一段郭德纲老婆王惠,为鼓曲社学员上课的视频,引起网友热议。从视频中我们能看到,王惠打扮十分休闲,一件透视的黑色圆领配同色系短裤,手上提着一个粉色贵妇包韩最美第一夫人金建希新造型好美!条纹西装小清新,少女气质不变韩国第一夫人金建希以高颜值爆火,她的穿衣打扮也是备受年轻人喜欢,49岁的小姐姐却总是像少女一样,不得不让人服气啊!近日,金建希陪同尹锡悦出席中央警察学校的毕业典礼,金建希的这身造型初秋第一件衬衫这样挑选搭配,不仅显瘦时髦,还能赚足回头率初秋季节会流行很多时髦的服饰,不过一定要入手的就是衬衫,这种经典的服饰在整个时尚圈中都是备受宠爱的,再加上衬衫的风格很多,这就意味着女孩们可以借助这种基础款的服饰体现不同的搭配魅力这才叫真的会穿!颜色低调不浮夸,款式简洁不繁杂,很气质时尚是什么?一千个人心目中有一千个哈姆雷特吧!不过,可以肯定的是,在高奢秀场以及高级成衣中很少看到太浮夸繁杂的设计,精简配色立体裁剪完美诠释了越简单越高级的重要性。也给到我们一个启50岁女人不管穿裙子or裤子,要遵循这些挑选原则,洋气显瘦女人到了50岁之后,在穿衣搭配上要格外讲究,想要通过穿搭来达到显高时髦的效果,那么适当的转变穿衣思路是非常必要的。尤其是在下装的挑选方面,不管穿裙子还是裤子,选对款式可以轻轻轻松达看了84岁琼瑶阿姨的穿搭,才发现女人端庄优雅比时髦扮嫩更迷人看了84岁琼瑶阿姨的穿搭,才发现女人端庄优雅比时髦扮嫩更迷人原创202208092230最炫前沿都说女人在少女阶段是一杯白开水,清纯干净不掺杂任何瑕疵而到了中年阶段,便犹如一杯咖啡教你半身裙这样搭配上衣和鞋子,不仅好看又提升气质,谁穿谁美夏天就是穿各种小裙子的季节,缤纷多彩,琳琅满目的裙装吸引人们的眼球,展现出女性们的万千风情和柔美韵味。今天呢,从我们最喜爱的半身裙入手,介绍几种实用的搭配技巧,让你在任何场合都能优眼光好有品位的女人,都爱穿以下4种裤子,时髦又有气质感有人说,女人的品位,都藏在她的体香里有人说,女人的品位,体现在她的言谈举止上还有人说,女人的品位,是天生的,是骨子里带有的。而在我看来,女人的品位,体现在穿衣打扮上,而一个女人是否后续来了,甲硝唑和壬二酸到底好不好用?用过的人都说很神奇甲硝唑和壬二酸在某书上也是很火的两个功效型护肤成分了,有些人说用着没效果,有些人说很神奇,那到底好不好用?今天就来分享下比如说祛痘,像很多痘肌的姐妹,暴力挤痘痘看似把它清掉了,其实4消息!沃特抵达中国,日本报价艾伦,余嘉豪专访,小丁仍未签约根据昨天的消息,沃特已经启程前往中国了。而来到今天,沃特已经正式抵达国内,并且开始隔离。按照这个时间算,月初肯定是可以抵达山东的。反正沃特对于球队还是比较好用的,只要找到一个不错的孙海平应该进入一队2022女排亚洲杯中国队比赛观感之一2022年女排亚洲杯终于在菲律宾拉开战幕,此次杯赛共有10支球队参赛,A组包括中国队韩国队伊朗队越南队和菲律宾队,B组有日本队泰国队哈萨克斯坦队中国台北队和澳大利亚队。本届亚洲杯,地球9300万光年外,黑洞喷出的神奇物质洪流,比银河系大50倍发表在皇家天文学会月刊杂志上的一项新研究显示,西悉尼大学的天文学家发现了天空中最大的黑洞喷流之一。喷流会留下一个能量巨大的黑洞,并以几乎与光一样快的速度行进,覆盖的距离超过一百万光穆帅痛失爱将!31岁新援重伤无缘世界杯,亿元锋霸只想加盟罗马北京时间8月22日凌晨,意甲球队罗马官方宣布,队内中场大将维纳尔杜姆右腿胫骨骨折,他将进行手术,预计维纳尔杜姆至少缺席4个月,这意味着上半赛季,这位荷兰中场将无法继续为罗马出场,穆离婚后的杨幂事业更上一层楼,当年事业最红时候为什么嫁刘恺威?随着披荆斩棘的哥哥2首播,在初舞台上居然看到了刘恺威的身影,手持吉他,在舞台上弹唱,现年47岁的刘恺威,外形上保持得很不错。对他印象最深,还是2011年和颖儿主演的千山暮雪中的莫绍Ubuntu可能会从默认安装中删除GNOMEToDo出品开源中国Ubuntu开发者UbuntuGNOME联合创始人JeremyBicha建议从Ubuntu22。10的默认安装中删除GNOMEToDo应用程序。自Ubuntu18。04当前球队出场榜阿金费耶夫711场,布教授穆勒本泽马列前四直播吧8月23日讯德媒慕尼黑日报统计了现役球员为当前俱乐部出场情况,俄超莫斯科中央陆军门将阿金费耶夫居首。当前俱乐部出场榜1。阿金费耶夫(莫斯科中央陆军),711场2。布斯克茨(巴小S带15岁女儿出席活动,现场爆料女儿择偶标准,疑似为女儿铺路小s自事业受阻后,不论是蹭具俊晔的热度,还是踩踏昔日好友炎亚纶,目的都是让自己重获资源,可谓之无所不用其极。小S带15岁女儿出席活动近日,小s带15岁二女儿Lily出席某时尚活动。学生护眼灯什么品牌最好?2022学生学习台灯十大品牌排行榜在当前社会,节奏快,同时也学生面对繁重的课业压力,而家长既希望自己的孩子学业有成,又担心会不会视力下降,于是,挑选一款学生护眼灯成了家长的必修课,面对市场上眼花缭乱的台灯款式,一不大疆新无人机8月25日发布这次再不怕撞墙炸机了大疆官方微博宣布,将于8月25日发布无人机新品,主题为天生会飞。现在,官方放出预热海报,让大家在其中挖掘新品的线索。可以看到,图中的楼房是DJ的造型,右侧楼顶四个空调室外机就是新品
adidasOriginalsForumLow84推MampampampMampamp39s联名新色!超经典大黄色皮革当提到MMs这个满载童年回忆的品牌时,想必大家一定都会在短时间内马上联想到有着鲜明的黄色外包装里面装着一颗颗超大颗的花生巧克力吧!而此次adidasOriginals便找来了MMs山花野花,衬托逸动无限美好因为很多景区还没有开放,反而让我更加喜欢去追逐大自然的美好,踏青正当时,当然不想错过每一处的风景,去往田间的小路上,两旁都是山花和野花,如此漂亮的景色我当然想去踏青啦。狭窄的乡间小火箭好消息,乐透签有望中状元!塞拉斯表态,核心基石已经确定休斯顿火箭队现在进入了休赛期,每年的休赛期,总会有阵容上面的调整。经过一个赛季的磨炼,火箭队很多年轻球员都打出了不俗的数据和潜力,但是,他们距离全明星级别还差一些。杰伦格林进步很大健康饮食科普这水果最伤肝!不少人还傻傻奉为养生果,千万管住嘴水果,是美味好吃有营养健康的代名词。一天一苹果,医生远离我一提起来就有很多的溢美之词。现代人还有特有的口福,不应季的水果也能美美尝到,但很多人不知道,水果也不能乱吃,有时候,你在吃微软Win10最稳定版本21H2已全面开放!你还不升级我们都知道Win10系统有很多个版本,而Win101909版本则会在5月10日开始停止功能更新。所以,微软现在都在呼吁大家尽快升级系统。毕竟,停止功能更新,就意味着如果后续系统出现印度神童抛出新预言4月28日再爆3大危机!加密货币将暴跌全球新冠肺炎疫情未见曙光,俄罗斯及乌克兰战争局势持续加剧全球经济不明朗能源供应紧张等等,都在近月困扰全球。而印度神童阿南德(AbhigyaAnand)于4月21日发布的最新影片预言价值连城!盘点足坛历史最有价值的十次转会话不多说,直入正题!第十名罗马签下巴蒂斯图塔2000年夏,罗马花费3360万美元从佛罗伦萨签下31岁的老将巴蒂斯图塔,创造了30岁以上球员的最高转会费纪录。然而很多人对这次转会充满利率上升后加密货币不再受宠比特币跌落4万美元随着利率开始上升,比特币市场发生了一件有趣的事情交易量大幅下降。现在,市场观察人士正在努力了解这一问题的影响,以及分析一个更宽松的货币政策世界对数字资产意味着什么。截至发稿,比特币质次价高!当前NBA交易价值最低的十大球星,威少已成烫手山芋NBA说到底就是一桩生意而已,根本没有什么忠诚可言,没有谁是真正的非卖品,不管你之前的表现有多好,为球队做出了怎样的贡献,在联盟中的地位有多高,只要你无法再对球队产生贡献,那等待你4月25日起,多家银行定期存款利率下调声明本文为财说得明白原创,各平台转载均需联系财说得明白获得授权前两天的文章里面才跟大家分析过,最近一些银行的大额存单利率开始下调,甚至低于普通的定期存款利率。想不到从今天开始,更多iOS鸿蒙ColorOS哪个系统最实用?我全都用过,这些功能易上瘾盘点这几年下来,我用过的手机也不少了,从苹果到安卓阵营,从主流机型到旗舰机型,过去分享了很多体验上的区别,不过一般还是只限于硬件和配置方面。那今天我就来分享一下iOS鸿蒙和Colo