GreenDao+存储数据库
来源:互联网 发布:验证码java 编辑:程序博客网 时间:2024/06/06 09:42
刚开始接触GreenDao数据库是都感觉挺麻烦,其实不然,用多了就会感觉到他的好处,其实挺简单的
//用GreenDao控件要到的依赖
project.gradle中
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.1'
app.gradle
apply plugin: 'org.greenrobot.greendao'
compile 'org.greenrobot:greendao:3.2.0'
//依赖导完后创建一个Bean类 类中的参数有几个什么类型 取决于你要在数据库中存储的字段和类型决定
比如我的: 存储三个String类型的字段 id相当于数据库中的自增id(注意:id不可重复,必须是Long类型)
@Entitypublic class UserBean { @Id(autoincrement =true) Long id; private String publishedAt; private String des; private String type; @Generated(hash = 1903720241) public UserBean(Long id, String publishedAt, String des, String type) { this.id = id; this.publishedAt = publishedAt; this.des = des; this.type = type; } @Generated(hash = 1203313951) public UserBean() { } public Long getId() { return this.id; } public void setId(Long id) { this.id = id; } public String getPublishedAt() { return this.publishedAt; } public void setPublishedAt(String publishedAt) { this.publishedAt = publishedAt; } public String getDes() { return this.des; } public void setDes(String des) { this.des = des; } public String getType() { return this.type; } public void setType(String type) { this.type = type; }}运行 后会生成三个文件
//此时在app.gradle中添加如下代码(gen文件会生成到指定路径下)
//创建一个对数据库操作的类
import android.app.Application;import android.content.Context;import android.content.ContextWrapper;import android.database.DatabaseErrorHandler;import android.database.sqlite.SQLiteDatabase;import android.util.Log;import com.bwie.xiaomuweek01.gen.DaoMaster;import com.bwie.xiaomuweek01.gen.DaoSession;import com.facebook.drawee.backends.pipeline.Fresco;import java.io.File;import java.io.IOException;/** * Created by Administrator on 2017/12/2. */public class GreenDaoHelper extends Application { private GreenDaoHelper Instance; private static DaoMaster daoMaster; private static DaoSession daoSession; public GreenDaoHelper getInstance() { if (Instance == null) { Instance = this; } return Instance; } @Override public void onCreate() { super.onCreate(); Fresco.initialize(this); } /** * 获取DaoMaster * * @param context * @return */ public static DaoMaster getDaoMaster(Context context) { if (daoMaster == null) { try{ ContextWrapper wrapper = new ContextWrapper(context) { /** * 获得数据库路径,如果不存在,则创建对象对象 * * @param name */ @Override public File getDatabasePath(String name) { // 判断是否存在sd卡 boolean sdExist = android.os.Environment.MEDIA_MOUNTED.equals(android.os.Environment.getExternalStorageState()); if (!sdExist) {// 如果不存在, Log.e("SD卡管理:", "SD卡不存在,请加载SD卡"); return null; } else {// 如果存在 // 获取sd卡路径 String dbDir = android.os.Environment.getExternalStorageDirectory().getAbsolutePath(); dbDir += "/Android";// 数据库所在目录 String dbPath = dbDir + "/" + name;// 数据库路径 // 判断目录是否存在,不存在则创建该目录 File dirFile = new File(dbDir); if (!dirFile.exists()) dirFile.mkdirs(); // 数据库文件是否创建成功 boolean isFileCreateSuccess = false; // 判断文件是否存在,不存在则创建该文件 File dbFile = new File(dbPath); if (!dbFile.exists()) { try { isFileCreateSuccess = dbFile.createNewFile();// 创建文件 } catch (IOException e) { e.printStackTrace(); } } else isFileCreateSuccess = true; // 返回数据库文件对象 if (isFileCreateSuccess) return dbFile; else return super.getDatabasePath(name); } } /** * 重载这个方法,是用来打开SD卡上的数据库的,android 2.3及以下会调用这个方法。 * * @param name * @param mode * @param factory */ @Override public SQLiteDatabase openOrCreateDatabase(String name, int mode, SQLiteDatabase.CursorFactory factory) { return SQLiteDatabase.openOrCreateDatabase(getDatabasePath(name), null); } /** * Android 4.0会调用此方法获取数据库。 * * @see android.content.ContextWrapper#openOrCreateDatabase(java.lang.String, * int, * android.database.sqlite.SQLiteDatabase.CursorFactory, * android.database.DatabaseErrorHandler) * @param name * @param mode * @param factory * @param errorHandler */ @Override public SQLiteDatabase openOrCreateDatabase(String name, int mode, SQLiteDatabase.CursorFactory factory, DatabaseErrorHandler errorHandler) { return SQLiteDatabase.openOrCreateDatabase(getDatabasePath(name), null); } }; DaoMaster.OpenHelper helper = new DaoMaster.DevOpenHelper(wrapper,"test.db",null); daoMaster = new DaoMaster(helper.getWritableDatabase()); //获取未加密的数据库 }catch (Exception e){ e.printStackTrace(); } } return daoMaster; } /** * 获取DaoSession对象 * * @param context * @return */ public static DaoSession getDaoSession(Context context) { if (daoSession == null) { if (daoMaster == null) { getDaoMaster(context); } daoSession = daoMaster.newSession(); } return daoSession; }}
//存储时创建上面类的对象调用方法:具体如下
private DaoSession session= GreenDaoHelper.getDaoSession(getActivity());//调用添加方法----以一个对象将数据添加到数据库( System.currentTimeMillis() --> 代表不可出现重复 )UserBean userBean=new UserBean(System.currentTimeMillis(),r.getPublishedAt(),r.getDesc(),r.getType());session.insert(userBean);
阅读全文
0 0
- GreenDao的数据库存储
- GreenDao+存储数据库
- greenDao数据库存储框架解析
- android的存储GreenDao数据库
- Android 之GreenDao 数据库存储(AndroidStudio)
- GreenDao数据库
- GreenDao数据库
- GreenDao数据库
- GreenDao数据库
- GreenDao数据库
- GreenDao数据库
- GreenDao数据库
- GreenDao数据库
- Android中的GreenDao框架修改数据库的存储路径
- greendao的存储路径
- GreenDao的简单存储
- GreenDao数据库结构升级
- GreenDAO数据库版本升级
- 2017-12-05——iOS——懒加载浅谈
- 动态规划—最大子矩阵和(两种题型)
- Celery
- 198-House Robber
- Instance "orcl", status UNKNOWN, has 1 handler(s) for this service...
- GreenDao+存储数据库
- Retrofit工具类的封装
- HTML5——拖拽,地理定位,web存储,缓存
- 学习笔记_008
- 人工智能领域的争议
- getimagesize() php 获取图片真实类型,大小等
- 原型模式 C#
- MySQL的GTID
- Python字符串操作