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路径

           newDaoGenerator().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数据库框架的内容,数据库这个东西说重要吧,确实重要,但是作为客户端的我们确实平常使用频率

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

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

简书地址:https://www.jianshu.com/p/753e7d9acae4

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

deyson

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值