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. init方法返回值自动改写问题

    [init方法返回值自动改写问题] 在ARC开启的情况下,以init开头的实例方法的返回值会被默认无视,返回类型会被编译器改写为类指针类型. 如一人类叫UIButton类,如果一个方法叫 (UILab ...

  2. Android NDK打印log到logcat的方法

    头文件 : <android/log.h> 函数: __android_log_print(ANDROID_LOG_XXX,LOG_TAG,content) 第一个参数是Log级别,比如: ...

  3. Django框架 之 Form表单和Ajax上传文件

    Django框架 之 Form表单和Ajax上传文件 浏览目录 Form表单上传文件 Ajax上传文件 伪造Ajax上传文件 Form表单上传文件 html 1 2 3 4 5 6 7 <h3& ...

  4. 5.python之pip安装模块失败

    本文是篇水文,主要是在学习python过程中总是遇到使用pip安装一些模块失败,记录一下安装模块解决办法 第一种方法: 首先安装wheel模块: pip install wheel 如果wheel都安 ...

  5. 浅析C语言中assert的用法(转)

    原文地址:http://www.jb51.net/article/39685.htm 以下是对C语言中assert的使用方法进行了介绍,需要的朋友可以参考下. assert宏的原型定义在<ass ...

  6. jsp-MySQL连接池

    1.将数据库驱动程序的JAR文件放在Tomcat的 common/lib 中: mysql-connector-java-5.1.18-bin.jar 下载地址:https://yunpan.cn/c ...

  7. do_gettimeofday使用方法

    1.简介: 在Linux中可以使用函数do_gettimeofday()函数来得到精确时间.它的精度可以达到微妙,是与C标准库中gettimeofday()用发相同的函数.在Linux内核中获得时间的 ...

  8. Oracle 定时任务讲解

    前几天,公司的job调度出现了问题,由于权限管的严,没有查看oracle 一些重要的数据字典,后面联系DBA,是由于数据库切换到备机时,参数设置不对,导致db job没有正常调度. 今天刚好有时间,想 ...

  9. Sharepoint2013搜索学习笔记之设置外网内容源(四)

    第一步,进入管理中心,点击管理应用程序,点击search service 应用程序进入到搜索管理配置页面,选择内容源 第二步,点击新建内容源,给内容源命名,在爬网内容类型中选网站,在爬网设置中选中仅对 ...

  10. asp.net mvc 中通过url字符串获取controller和action

    在项目中遇到需要通过url字符串获取controller和action的情况,百度了 一下找到了一个可以用的方法 ,在这里分享和记录一下 这个方法是在博客园的博问里看到的 原文地址是http://q. ...