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

作者: deyson | 来源:发表于2017-07-20 16:07 被阅读386次

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

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

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

据库这一关是躲不过去了。大家经常听到的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数据库框架的内容,数据库这个东西说重要吧,确实重要,但是作为客户端的我们确实平常使用频率

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

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

相关文章

  • 常用框架――链接

    主流UI开源框架集合优秀开源UI和工具框架开源框架大集合Android10大常用框架炫酷效果Demo集合Banne...

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

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

  • Android 框架

    Android开源项目分类汇总 Android开源工具项目集合 2015最流行的Android组件、工具、框架大全...

  • 2018-06-23 LitePal

    Android数据库框架 - LitePal LitePal是一款开源的Android数据库框架,它采用了对象关系...

  • Android开源框架集合分享-结束

    转眼间,自己整理的关于常用的框架的资料,已经分享的差不多的了。现在剩下的是关于bug收集和一些其他的收...

  • Android开源框架【集合】

    图解一览 Square& JakeWharton 框架名称功能描述Picasso一个强大的图片下载与缓存的库OkH...

  • Android开源框架集合分享-网络请求

    接着上次的文章继续分享关于网络框架一些知识总结,有需要的小伙伴儿可以看看,顺便可以指导一下,一起交流 学习...

  • Android开源框架集合分享-图像加载

    关于网络加载已经写完了,今天来给大家分享一下关于图像加载的知识,在开发中除了请求数据怎么显示之外,剩下的 最...

  • 常用的Android开源库

    常用的Android开源库 1.LitePal LitePal是一款开源的Android数据库框架,采用了对象关系...

  • Android数据库框架GreenDao 3.2.2

    android数据库框架主流开源的有:OrmLite、greenDAO 、Realm、DBFlow、LitePal...

网友评论

    本文标题:Android开源框架集合分享-数据库

    本文链接:https://www.haomeiwen.com/subject/mpodkxtx.html