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
  • 配置: 添加以下依赖
    • compile ‘de.greenrobot:greendao:2.1.0’
    • compile ‘de.greenrobot:greendao-generator:2.1.0’
  • 用途: 操作数据库
  • 优点:
    • 性能最大化,内存开销最小化
    • 易于使用的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

你可能感兴趣的:(Android-基础)