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("添加一条记录的结果为:"+"\n\n"+"id:"+user.getId()
+"\n"+"姓名:"+user.getName()
+"\n"+"地址"+user.getUserAddress()
+"\n"+"用户编号:"+user.getUsercode());
}
} private void queryList(){
String resultStr="显示结果为:"+"\n\n";
List<User> userList=userDao.loadAll();
int i=0;
for (User user : userList) {
i=i+1;
resultStr=resultStr+"第"+i+"条记录的结果:"+"id:"+user.getId()+
"\n"+"姓名:"+user.getName()+"\n"+"地址:"+user.getUserAddress()+"\n\n"; }
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一条记录的结果:\n"+"id:"+user.getId()+"\n姓名:"+user.getName()+
"\n地址:"+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="查询结果为:"+"\n\n";
int i=0;
for (User user : userList) {
i=i+1;
resultStr=resultStr+"第"+i+"条记录为:\n"+"id:"+user.getId()+"\n姓名:"+user.getName()+
"\n地址:"+user.getUserAddress()+"\n\n";
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);
}
}

最新文章

  1. Jmeter之参数化
  2. Linux命令学习总结:rmdir
  3. ASP.NET 5系列教程 (三):view components介绍
  4. Spring AOP 针对注解的AOP
  5. CentOS学习笔记--JDK安装
  6. Android SDK安装时碰到的问题之解决办法
  7. QT下自定义QQ聊天窗口tab控件
  8. 292. Nim Game(C++)
  9. Android 推断当前Activity是不是最后一个Activity 以及 应用或Activity是否存在
  10. linux系统关机与重新启动命令
  11. c语言:最长对称子串(3种解决方案)
  12. [置顶] Objective-C编程之道iOS设计模式单例解析(2)
  13. Android开发相关操作
  14. Android Studio 1.1.0 比较有用的快捷键
  15. P4147 玉蟾宫 二维DP 悬线法
  16. ElementUI - Table 表头排序
  17. 【PHP篇】字符串基础
  18. Rabbitmq 与springboot 结合
  19. 兼容IE-FireFox-Chrome的背景音乐播放
  20. wpf image 指定Stretch=&quot;None&quot; 不拉伸的时候,仍然拉伸的解决办法

热门文章

  1. libevent源码深度剖析八
  2. Mysql 设置外部访问
  3. Linux 安装lamp
  4. conda create -n AlphaPose2018 python=2.7
  5. POI 生成exel报表
  6. Java——操作Excel表格,读取表格内容
  7. ensemble 的2篇入门 文章
  8. 整合Office Web Apps至自己的开发系统
  9. css总结6:行高和字体大小
  10. 好的linux网站