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); } }