Android开源框架集合分享-数据库

        上一次写到的图像加载,这次中间间隔的时间稍微长了一些,先对大家报个歉。说实话,差点把这个事情给忘了。

亏得朋友的提醒,只顾整理忘记发了,真是罪过罪过。今天给大家分享的是在开源框架中的有关数据库的框架。

        数据库这个东西了解后端的小伙伴都知道,对程序的来说是相当重要。因为数据是无价的,虽然现在有云存储,但是数

据库这一关是躲不过去了。大家经常听到的mysql,sqlserver,DB2,Oracle等一些知名的数据库在各行各业应用非常广泛。

在我们android系统中自带的轻量级的sqlite数据库,作为移动端来说,足够使用了。比较其他的确实用不了,手机内存就那么

大,我们还要存储我们宝贵的各种资源,确实装不下。

        使用数据库最痛苦的事情,大概就是写sql语句,还好我们的一般都是简单的CRUD,并且涉及的表都是比较简单的,要是跟

后台一样,嵌套查询能写一页,我估计android里面涉及的数据库的部分的需求都要被改了。

现在来介绍一下,本人了解的一些数据库框架和一些用法,有什么错误的或者好的框架请各位朋友留言,不吝赐教一下

4.1数据库_ormlite

主页:http://ormlite.com/(这个貌似需要翻墙)

*配置: 添加以下依赖

 compile 'com.j256.ormlite:ormlite-android:4.48'

compile 'com.j256.ormlite:ormlite-core:4.48'

用途: 操作数据库

使用步骤

1.创建数据库表结构的实体类.示例代码:

   @DatabaseTable(tableName = "user")

   public class User {

               @DatabaseField(generatedId = true)

               private int id;

               @DatabaseField(columnName = "name")

               private String name;

               @DatabaseField(columnName = "age")

               private int age;

               @DatabaseField(columnName = "tel")

               private String tel;

                public User() {

                               }

               public User(String name, int age, String tel) {

                          this.name = name;

                          this.age = age;

                          this.tel = tel;

                        }

        }

2.创建OrmLiteSqliteOpenHelper的实现类.示例代码:

public class UserDBOpenHelper extends OrmLiteSqliteOpenHelper {

           public UserDBOpenHelper(Context context) {

                 super(context, "user.db", null, 1);

            }

        @Override

        public void onCreate(SQLiteDatabase database, ConnectionSource connectionSource) {

           try {

                  // 创建表

                 TableUtils.createTable(connectionSource, User.class);

                 } catch (SQLException e) {

                     e.printStackTrace();

                     }

              }

       @Override

        public void onUpgrade(SQLiteDatabase database, ConnectionSource connectionSource, int oldVersion, int newVersion) {

            try {

                // 更新表

               TableUtils.dropTable(connectionSource, User.class, true);

               onCreate(database, connectionSource);

               } catch (SQLException e) {

                e.printStackTrace();

                 }

       }

           private static UserDBOpenHelper instance;

           public static synchronized UserDBOpenHelper getInstance(Context context) {

           if (instance == null) {

                 synchronized (UserDBOpenHelper.class) {

          if (instance == null) {

          instance = new UserDBOpenHelper(context);

                      }

               }

   }

    return instance;

}

       private Dao dao;

       // 获取操作数据库的DAO

      public Dao getUserDao() throws SQLException {

      if (dao == null) {

            dao = getDao(User.class);

         }

          return dao;

      }

     @Override

     public void close() {

         super.close();

         dao = null;

         }

 }

3.获取数据库的DAO对象, 即可进行增删改查的操作.示例代码:


       UserDBOpenHelper helper = new UserDBOpenHelper(this);

       Dao dao =  helper.getUserDao();

       User user = new User("zhangsan", 12, "13212345678");

       // 增

      dao.create(user);

       // 改

      dao.updateRaw("update user set tel = '18882348888' where name = ?", new String[]{"王武"});

      // 查

      List query = dao.queryForEq("name", "王武");

      // 删

      dao.deleteById(2);

4.2数据库_greenDAO(这个使用频率比较高)

主页:https://github.com/greenrobot/greenDAO

配置: 添加以下依赖

官方文档最新的配置

文档最新配置

优点:

性能最大化,内存开销最小化

易于使用的API

为Android进行高度优化

使用步骤

1.创建自定义的DAOGenerater,指定数据库相关配置并生成相关类

public class CustomDAOGenerater {

          public static void main(String[] args) throws Exception {

          // 第一个参数为数据库版本

          //第二个参数为数据库的包名

          Schema schema = new Schema(1, "com.alpha.db");

         // 创建表,参数为表名

         Entity entity = schema.addEntity("Info");

         // 为表添加字段

        entity.addIdProperty();// 该字段为id

        entity.addStringProperty("name");// String类型字段

        entity.addIntProperty("age");//Int类型字段

       entity.addStringProperty("tel");// String类型字段

        // 生成数据库相关类

        //第二个参数指定生成文件的本次存储路径,AndroidStudio工程指定到当前工程的java路径

             new DaoGenerator().generateAll(schema, "C:\\Users\\Alpha\\AndroidStudioProjects\\GreenDaoDemo\\app\\src\\main\\java");

            }

  }

2.在Application中通过DaoMaster.DevOpenHelper初始化数据库

              // 该初始化过程最好放在Application中进行,避免创建多个Session

              private void setupDatabase() {

                    // 通过 DaoMaster 的内部类 DevOpenHelper创建数据库

                   // 注意:默认的 DaoMaster.DevOpenHelper 会在数据库升级时,删除所有的表

                   // 所以,在正式的项目中,你还应该做一层封装,来实现数据库的安全升级。

                   /**

                     * @param context : Context

                     * @param name : 数据库名字

                     * @param factory : CursorFactroy

                    */

                  DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "student.db", null);

                  // 获取数据库

                  SQLiteDatabase database = helper.getWritableDatabase();

                  // 获取DaoMaster

                 DaoMaster daoMaster = new DaoMaster(database);

                  // 获取Session

                DaoSession daoSession = daoMaster.newSession();

                 // 获取对应的表的DAO对象

                InfoDao dao = daoSession.getInfoDao();

           }

3.获取数据库的DAO对象,即可进行增删改查的操作

             // 增

            dao.insert(new Info(null, "zhangsan", 12, "13112345678"));

            // 删

           dao.deleteByKey(1L);

           // 改

           Info info = new Info(3L, "赵琦", 78, "18812348888");

           dao.update(info);

           // 查

           QueryBuilder builder = dao.queryBuilder();

           builder.where(InfoDao.Properties.Name.eq("lisi"));

          Query build = builder.build();

          List list = build.list();

 4.3数据库_Litepal

主页 :https://github.com/LitePalFramework/LitePal(这个文档写的很全)

中文文档地址: http://blog.csdn.net/sinyu890807/article/category/2522725(感觉英文别扭的可以看一下分享的博客)

4.4 数据库_android-lite-orm(国内大神写的,用着挺好用)

主页:https://github.com/litesuits/android-lite-orm

1.创建数据库

文档上解释:

        一个数据库对应一个LiteOrm的实例,如果一个App只有一个数据库,那么LiteOrm应该是全局单例的。 如果多次新建LiteOrm实例,系统会提示你应该关闭之前的数据库,也可能会引起其他未知错误。

创建数据库

2.建表逻辑

该框架会在你新建一个model的时候,自动的为你创建一个表,作为使用者的我们,直接操作对象即可。相当于就是建表语句

不过这样做,操作更高效

建立操作对象

LiteOrm将为开发者建一个名为“test_model”的数据库表,其字段为:id name login。 建表语句:CREATE TABLE IF NOT EXISTS test_model (id INTEGER PRIMARY KEY AUTOINCREMENT ,name TEXT, login TEXT DEFAULT true)。

3.数据库的一些CRUD操作


简单的操作

这个数据库框架是国内的大神的写的,简单易操作。集成非常简单,有兴趣的可以参照示例,与之前介绍的框架相比,这个框架

算是最简单的一个,也是文档介绍比较全面的一个,总的来说简单易懂易集成。

        以上就是关于android数据库框架的内容,数据库这个东西说重要吧,确实重要,但是作为客户端的我们确实平常使用频率

非常之低,而不像后台基本上做一个东西都要跟其深入交流一下,不过作为知识的拓展多了解一些,对我们将来的发展还是很有

帮助的。上面的资料大部分都是实践过的,如果有什么不对的地方,请各位朋友及时的指出来,不吝赐教。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342

推荐阅读更多精彩内容