zoukankan      html  css  js  c++  java
  • 044 Android 数据库框架GreenDao实战使用

    1.添加记录(SQLite 增)

    2.删除记录(SQLite 删)

    3.修改记录(SQLite 改)

    4.查询记录(SQLite 查)

    <1> DAO查询

     <2>QueryBuilder查询

    <4>Query重复查询

    <5>常用的查询方法含义

    <6>调试技巧

    .5.java后台代码

    新建2个java类(HMROpenHelper、MyGreenDaoApplication)

    (1)HMROpenHelper代码

    package com.example.lucky.mygreendaotest;
    
    import android.content.Context;
    import android.database.sqlite.SQLiteDatabase;
    
    import com.example.lucky.mygreendaotest.gen.DaoMaster;
    
    //数据库创建工具类
    public class HMROpenHelper extends DaoMaster.OpenHelper {
        //构造函数,参数2 name为数据库名称
        public HMROpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory) {
            super(context, name, factory);
        }
    }

    (2)MyGreenDaoApplication

    package com.example.lucky.mygreendaotest;
    
    import android.app.Application;
    import android.database.sqlite.SQLiteDatabase;
    
    import com.example.lucky.mygreendaotest.gen.DaoMaster;
    import com.example.lucky.mygreendaotest.gen.DaoSession;
    
    /*注意:MyGreenDaoApplication类继承Application,需要在AndroidManifest.xml文件中进行相关设置
    android:name=".MyGreenDaoApplication"
    MyGreenDaoApplication类的作用是封装数据库对象*/
    
    public class MyGreenDaoApplication extends Application {
        private SQLiteDatabase db;   //SQLiteDatabase数据库对象
        private DaoMaster daoMaster; //daoMaster对象
        private DaoSession daoSession; //daoSession对象
        public  static MyGreenDaoApplication instances; //声明本类的实例对象
    
        @Override
        public void onCreate() {
            super.onCreate();
            instances=this; //给实例对象赋值
            setDatabase();
        }
    
        private void setDatabase() {
            //创建数据库
            HMROpenHelper hmrOpenHelper=new HMROpenHelper(this,"mydb1",null);
            db=hmrOpenHelper.getWritableDatabase(); //获取数据库对象
            daoMaster=new DaoMaster(db);  //获取DaoMaster对象
            daoSession=daoMaster.newSession();
    
        }
    
        //获取instances 对象
        public  static MyGreenDaoApplication getInstances(){
            return instances;
        }
    
        //获取daoSession对象
        public DaoSession getDaoSession(){
            return daoSession;
        }
    
        public SQLiteDatabase getDb(){
            return db;
        }
    }

    (2)MainActivity代码

    package com.example.lucky.mygreendaotest;
    
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.util.Log;
    import android.widget.TextView;
    
    import com.example.lucky.mygreendaotest.gen.UserDao;
    
    import org.greenrobot.greendao.query.Query;
    import org.greenrobot.greendao.query.QueryBuilder;
    
    import java.io.BufferedReader;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.Reader;
    import java.util.ArrayList;
    import java.util.List;
    
    public class MainActivity extends AppCompatActivity {
        private TextView tv_result;
        private UserDao userDao;
        private List<User> userList;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            tv_result=findViewById(R.id.tv_result);
            userList=new ArrayList<>();
            QueryBuilder.LOG_SQL=true;     //显示SQL语句(可在控制台的Run窗口中看到SQL语句)
            QueryBuilder.LOG_VALUES=true;  //显示SQL语句的值
            userDao=MyGreenDaoApplication.getInstances().getDaoSession().getUserDao();
            userDao.deleteAll(); //清空表中的所有数据
    //        insertOneRecord(); //插入一条数据
    //        queryOneByName();  //根据姓名查询记录
            insertManyRecord(); //插入多条记录
    //        deleteByName();     //根据姓名删除记录
    //        userDao.deleteByKey((long)12); //通过主键值删除记录
    //        updateUser();    //修改数据表的数据
    //        queryList();     //查询多条记录
    //        loadOneById();
    //        queryMany();
            queryRepeat();
    
            //在控制台输出语句
    //        System.out.println("like");  //方式1
    //        Log.d("002","linda");//方式2
            try {
                InputStream input=getResources().openRawResource(R.raw.user);//xiaohuat是我的文件名,这里应该根据具体文件更改
                Reader reader=new InputStreamReader(input);
                BufferedReader br=new BufferedReader(reader);
                String str;
                while ((str=br.readLine())!=null){
                    System.out.println(str);
                }
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
        //插入一条数据记录
        private void insertOneRecord(){
            User user=new User(); //实例化实体类对象
            user.setName("lucky");
            user.setUsercode("007");
            user.setUserAddress("天台县");
            userDao.insert(user);
        }
    
        //插入多条数据记录
        private void insertManyRecord(){
            List<User> userList=new ArrayList<>();
            User user1=new User();
            user1.setName("linda");
            user1.setUsercode("001");
            user1.setUserAddress("杭州");
    
            User user2=new User();
            user2.setName("jack");
            user2.setUsercode("002");
            user2.setUserAddress("苏州");
    
            User user3=new User();
            user3.setName("lily");
            user3.setUsercode("003");
            user3.setUserAddress("南京");
    
            User user4=new User();
            user4.setName("pink");
            user4.setUsercode("004");
            user4.setUserAddress("湖州");
            userList.add(user1);
            userList.add(user2);
            userList.add(user3);
            userList.add(user4);
            userDao.insertInTx(userList);
        }
    
        //单条数据查询
        private void queryOneByName(){
            User user=userDao.queryBuilder().where(UserDao.Properties.Name.eq("lucky")).build().unique();
            if(user!=null){
                tv_result.setText("添加一条记录的结果为:"+"
    
    "+"id:"+user.getId()
                +"
    "+"姓名:"+user.getName()
                +"
    "+"地址"+user.getUserAddress()
                +"
    "+"用户编号:"+user.getUsercode());
            }
        }
    
        private void queryList(){
            String resultStr="显示结果为:"+"
    
    ";
            List<User> userList=userDao.loadAll();
            int i=0;
            for (User user : userList) {
                i=i+1;
                resultStr=resultStr+"第"+i+"条记录的结果:"+"id:"+user.getId()+
                        "
    "+"姓名:"+user.getName()+"
    "+"地址:"+user.getUserAddress()+"
    
    ";
    
            }
            tv_result.setText(resultStr);
        }
    
        //根据姓名删除记录
        private void deleteByName(){
            QueryBuilder queryBuilder=userDao.queryBuilder();
            List<User> userList=queryBuilder.where(UserDao.Properties.Name.eq("linda")).list();
            for (User user : userList) {
                userDao.delete(user);
            }
        }
    
        private void updateUser(){
            //注意:一个实体类对象,相当于数据表中的一条记录
            User user=userDao.queryBuilder().where(UserDao.Properties.Name.eq("linda")).build().unique(); //查询数据表中姓名为linda的一条记录
            user.setUserAddress("上海");
            userDao.update(user); //更新数据表中的数据
        }
    
        //查询一条记录
        private void loadOneById(){
            User user= null;
            try {
                user = userDao.load((long) 15);
            } catch (Exception e) {
                e.printStackTrace();
            }
            tv_result.setText("Load一条记录的结果:
    "+"id:"+user.getId()+"
    姓名:"+user.getName()+
            "
    地址:"+user.getUserAddress());
        }
    
        //查询多条语句
        private void queryMany(){
            QueryBuilder queryBuilder=userDao.queryBuilder();
    //        挑选名字中带有"in"的数据,并按降序排列
    //        List<User> userList=queryBuilder.where(UserDao.Properties.Name.like("%in%"))
    //                .orderDesc(UserDao.Properties.Id).list();
            List<User> userList=queryBuilder.where(UserDao.Properties.Name.like("%in%"),
                    UserDao.Properties.UserAddress.eq("杭州")).list();
            queryResultShow(userList);
        }
    
        private void queryResultShow(List<User> userList) {
            if(userList!=null){
                String resultStr="查询结果为:"+"
    
    ";
                int i=0;
                for (User user : userList) {
                    i=i+1;
                    resultStr=resultStr+"第"+i+"条记录为:
    "+"id:"+user.getId()+"
    姓名:"+user.getName()+
                            "
    地址:"+user.getUserAddress()+"
    
    ";
                    tv_result.setText(resultStr);
                }
            }
        }
    
        private void queryRepeat(){
            Query query=userDao.queryBuilder().where(UserDao.Properties.Name.like("%in%"),
                    UserDao.Properties.UserAddress.like("湖%")).build();
            query.setParameter(0,"%il%");
            query.setParameter(1,"%京");
            List<User> userList=query.list();
            queryResultShow(userList);
        }
    }
  • 相关阅读:
    功能规格说明书
    绝望的作业
    php闭包
    php isset emtpy
    PHP超级全局变量、魔术变量和魔术函数
    死锁的一个例子
    php session cookie
    http状态码301、302
    php浮点数
    学过的设计模式
  • 原文地址:https://www.cnblogs.com/luckyplj/p/10582860.html
Copyright © 2011-2022 走看看