使用GreenDao添加数据-查询数据

来源:互联网 发布:java开发微信的步骤 编辑:程序博客网 时间:2024/05/16 07:28

//首先先敲一个Util类备用

GreenDaoHelper//代码在这里
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.baway.admin.zhoukaoonelianxi.gen.DaoMaster;import com.baway.admin.zhoukaoonelianxi.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 ContextWrapper#openOrCreateDatabase(String,                     *      int,                     *      SQLiteDatabase.CursorFactory,                     *      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;    }}//好了下面开始操作吧//因为我在做这个的时候多了一个网络判断下面这块的存数据库的操作是在有网络的状态下书写的
//存值到数据库for(int i=0;i< results.size();i++){    System.out.println("==========走这儿了没走这儿了没==========");    MyBean.ResultsBean r=results.get(i);    User userBean=new User(System.currentTimeMillis(),r.getDesc());    System.out.println("=============userBean============="+userBean.getDesc());    session.insert(userBean);
}

//在没有网络的时候做一个数据库查询
//查询记录List<User> users = session.getUserDao().loadAll();System.out.println("=====users======="+users.get(0).get_id());System.out.println("============usersusers=========="+users.get(0).getDesc());MyAdapter myAdapter=new MyAdapter(getActivity(),users);mRv.setAdapter(myAdapter);

//当然做这些操作的前提是将GreenDao集成成功啦!!!
如果有不会的朋友可以参考一下下面这个地址
http://blog.csdn.net/inter_native/article/details/78603256
//好了大概就是这样了