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

Android 数据库框架GreenDao实战使用的更多相关文章

  1. Android数据库框架——GreenDao轻量级的对象关系映射框架,永久告别sqlite

    Android数据库框架--GreenDao轻量级的对象关系映射框架,永久告别sqlite 前不久,我在写了ORMLite这个框架的博文 Android数据库框架--ORMLite轻量级的对象关系映射 ...

  2. Android 数据库框架GreenDao使用

    1.GreenDao3介绍 (1)基本概念 (2)GreenDao3工作原理 (3)GreenDao优点 (4)GreenDao3版本的改进 2.GreenDao3的相关配置概念介绍 (1)配置项目( ...

  3. Android 数据库框架总结(转)

    转自 http://blog.csdn.net/da_caoyuan/article/details/61414626 一:OrmLite 简述: 优点: 1.轻量级:2.使用简单,易上手:3.封装完 ...

  4. Android 数据库框架总结,总有一个适合你!

    一:OrmLite 简述: 优点: 1.轻量级:2.使用简单,易上手:3.封装完善:4.文档全面.缺点:1.基于反射,效率较低(本人还没有觉得效率低):2.缺少中文翻译文档 jar包 地址:http: ...

  5. Android数据库框架——ORMLite轻量级的对象关系映射(ORM)Java包

    Android数据库框架--ORMLite轻量级的对象关系映射(ORM)Java包 事实上,我想写数据库的念头已经很久了,在之前写了一个答题系统的小项目那只是初步的带了一下数据库,数据库是比较强大的, ...

  6. ORM数据库框架 greenDAO SQLite MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  7. Android 数据库框架OrmLite的使用(一)

    在这里记录下最基本的用法,官网上可了解相关的介绍. 1.下载OrmLite jar 在下载android的:ormlite-android-4.48.jar和ormlite-core-4.48.jar ...

  8. Android 数据库框架ormlite

    Android 数据库框架ormlite 使用精要 前言 本篇博客记录一下笔者在实际开发中使用到的一个数据库框架,这个可以让我们快速实现数据库操作,避免频繁手写sql,提高我们的开发效率,减少出错的机 ...

  9. Android数据库框架-----ORMLite关联表的使用

    上一篇已经对ORMLite框架做了简单的介绍:Android数据库框架-----ORMLite 的基本用法~~本篇将介绍项目可能会使用到的一些用法,也为我们的使用ORMLite框架总结出一个较合理的用 ...

随机推荐

  1. Unity3d平台信息设置

    [Unity3d平台信息设置] 通过"Edit" -> "Project Settings" -> "Player"菜单选项.打 ...

  2. Tarjan的强连通分量算法

    Tarjan算法用于寻找图G(V,E)中的所有强连通分量,其时间复杂度为O(|V|+|E|). 所谓强连通分量就是V的某个极大子集,其中任意两个结点u,v在图中都存在一条从u到v的路径. Tarjan ...

  3. 学习神器!本机安装虚拟机,并安装Linux系统,并部署整套web系统手册(包含自动部署应用脚本,JDK,tomcat,TortoiseSVN,Mysql,maven等软件)

    1.   引言 编写目的 本文档的编写目的主要是在Linux系统上部署mis_v3员工管理系统,方便测试,并为以后开发人员进行项目部署提供参考 准备工作 软件部分 软件项 版本 备注 Mysql 5. ...

  4. C++——多线程

    1.多进程和多线程:进程是一个总任务,一个进程可能包含多个线程. 2.并行和并发: 并发的关键是你有处理多个任务的能力,不一定要同时. 并行的关键是你有同时处理多个任务的能力. 3.共享数据的管理和线 ...

  5. suse配置dhcp服务器

    Suse  dhcp服务器安装在安装系统时勾选 Suse dhcp 默认配置文件 /etc/dhcpd.conf Suse dhcp 启动程序 /etc/init.d/dhcpd restart 配置 ...

  6. Hadoop完全分布式环境搭建(三)——基于Ubuntu16.04安装和配置Java环境

    [系统环境] 1.宿主机OS:Win10 64位 2.虚拟机软件:VMware WorkStation 12 3.虚拟机OS:Ubuntu16.04 4.三台虚拟机 5.JDK文件:jdk-8u201 ...

  7. dataframe 用法总结

    http://pda.readthedocs.io/en/latest/chp5.html data = [] 列表初始化 data = (,) data = {} 字典初始化 data = pd.D ...

  8. Edge 自动给数字加下划线的问题

    <meta name="format-detection" content="telephone=no,email=no,address=no">

  9. 通达OA整合教程

      资源下载地址: 通达OA 2015:http://pan.baidu.com/s/1qYMxsZU mysql下载:http://pan.baidu.com/s/1c2oVI5y 整合文件:htt ...

  10. (转)Asp.Net底层原理(三、Asp.Net请求响应过程)

    原文地址:http://www.cnblogs.com/liuhf939/archive/2013/09/16/3324753.html 在之前,我们写了自己的Asp.Net框架,对整个流程有了一个大 ...