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. DataSet、DataTable转换List(泛型集合与DataSet互相转换 )

    using System.Data; using System.Reflection; using System.Collections; using System.Collections.Gener ...

  2. codeforce 457DIV2 B题

    题意:  题目给出两个整数n,k,(n<=10^18,k<=10^5),求一个含有k个整数的序列,要求以2为底,以序列内数字为幂的和为n,其中序列内最大的数最小,若有多个序列满足条件,输出 ...

  3. 刷题向》关于第一篇状压DP BZOJ1087 (EASY+)

    这是本蒟蒻做的第一篇状压DP,有纪念意义. 这道题题目对状压DP十分友善,算是一道模板题. 分析题目,我们发现可以用0和1代表每一个格子的国王情况, 题目所说国王不能相邻放置,那么首先对于每一行是否合 ...

  4. Linuc bazaar命令

    一.简介 Bazaar 是一种强大的新一代源代码控制系统,它能够适用于所有主流操作系统,能够适应任何开发团队的工作模式.   二.安装 1)yum方式 yum install -y bzr   三.教 ...

  5. 面向对象property属性、静态方法和类方法

    一.property属性 1.什么是property特性? property是一种特殊的属性,访问它时会执行一段功能(函数)然后返回值. from math import pi class Circl ...

  6. Join导致冗余数据引起慢SQL

    业务过程中碰到多个join引起慢SQL问题,数据量不大,但查询很慢,搜到一片BLog,参考解决. 业务过程不记录,以blog内容重现: 原SQL: select distinct abc.pro_co ...

  7. Python Lambda 的简单用法

    下面代码简单举例介绍以下 lambda的用法. from functools import reduce #1 python lambda会创建一个函数对象,但不会把这个函数对象赋给一个标识符,而de ...

  8. MongoDB整理笔记のReplica oplog

    主从操作日志oplog MongoDB的Replica Set架构是通过一个日志来存储写操作的,这个日志就叫做"oplog".oplog.rs是一个固定长度的capped coll ...

  9. 备忘录(Memento)模式

    *备忘录模式(Memento):在不破坏封装性的前提下,捕获一个对戏的内部状态, * 并在该对象之外保存这个状态.这样以后就能恢复到原来保存的状态 *Originator(发起人): 负责创建一个备忘 ...

  10. C# 高斯消元项目运用

    C# 高斯消元项目运用 最近项目涉及到一个需求,需要把指定数量的多个商品,混合装入到多个不同型号的箱子中(每种型号的箱子装入商品的种类和个数是固定的).这就涉及到解多元一次方程 针对多元一次方程一般用 ...