百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT技术 > 正文

android使用greendao来保存数据

wptr33 2025-05-23 20:39 23 浏览

有时我们的数据属于保存到数据库,对于Android应用和IOS应用,我们一般都会使用SQLite这个嵌入式的数据库作为我们保存数据的工具。由于我们直接操作数据库比较麻烦,而且管理起来也非常的麻烦,所以我今天结束用greendao来保存数据。如果对我的文章感兴趣,欢迎订阅我的头条号:一点热,yeehot.com.

1、我们创建一个Android工程,这里就不着重结束了。

2、使用gradle导入greendao包和greendao-generator包并配置我们的路径。

其中greendao用于我们操作数据库的类。而greendao-generator是用来产生我们的的数据库的数据类。包含了Bean、DAO、DaoMaster、DaoSession 。

我们在项目中添加如下的代码

compile 'org.greenrobot:greendao:3.0.1'

compile 'org.greenrobot:greendao-generator:3.0.0'

3、在src/main下创建一个java-gen的包,用于生成我们的bean类文件

4、创建Dao的生成类文件YeehotGeneratorDao.java,用于生成上面说的几个类。这里我直接在项目里面创建了。

public class YeehotGeneratorDao {

public static void main(String[] args) throws Exception {

//DB_VESION,BEAN 版本号与 包路径

Schema schema = new Schema(1, "com.yeehot.greendao");

addTable(schema);

//第二个参数是我们刚刚的包db的路径。

new DaoGenerator().generateAll(schema, "/Users/yeehot/Desktop/a/GreendaoInfo/app/src/main/java-gen");

}

/**

* @param schema

*/

/**

* @param schema

*/

private static void addTable(Schema schema) {

// 创建一个实体,其实就是表名

Entity User = schema.addEntity("User");

//添加表的属性。

User.addIdProperty();

//添加字符串的属性

User.addStringProperty("email").notNull();

User.addStringProperty("passwd");

User.addStringProperty("userid");

}

}

5、运行一下YeehotGeneratorDao

大概过了一会就生成我们需要的类文件了,如图

6、有了上面的几个类后,我们就基本可以操作我们的数据库了。

我们在创建的登陆页面里面测试看看

首先,我们需要创建一个创建数据库的方法,这样里面的表才能存放进去

package com.yeehot.greendaoinfo;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.util.Log;

import android.view.View;

import android.widget.Button;

import android.widget.EditText;

import com.yeehot.greendaoinfo.db.DaoMaster;

import com.yeehot.greendaoinfo.db.DaoSession;

import com.yeehot.greendaoinfo.db.User;

import com.yeehot.greendaoinfo.db.UserDao;

import org.greenrobot.greendao.generator.Query;

import org.greenrobot.greendao.query.QueryBuilder;

import java.text.DateFormat;

import java.util.Date;

import java.util.List;

public class MainActivity extends AppCompatActivity {

private SQLiteDatabase db;

private DaoMaster daoMaster;

private DaoSession daoSession;

private Cursor cursor;

private EditText email;

private Button add;

private Button search;

private Button delete;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

email= (EditText) findViewById(R.id.email);

add= (Button) findViewById(R.id.add);

search= (Button) findViewById(R.id.search);

delete= (Button) findViewById(R.id.delete);

CreateDB();

add.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

addEmail();

}

});

search.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

FindEmail();

}

});

delete.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

DeleteEmail();

}

});

}

private void CreateDB() {

// DevOpenHelper

DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "yeehotdb", null);

db = helper.getWritableDatabase();

daoMaster = new DaoMaster(db);

daoSession = daoMaster.newSession();

}

private void addEmail() {

String emailinfo = email.getText().toString();

// 插入操作,简单到只要你创建一个 Java 对象

User note = new User(null,emailinfo,"1234","0001");

daoSession.getUserDao().insert(note);

}

private void FindEmail() {

Query query = daoSession.getUserDao().queryBuilder()

.where(UserDao.Properties.Email.eq(email.getText().toString()))

.orderAsc(UserDao.Properties.Id)

.build();

List list=query.list();

QueryBuilder.LOG_SQL = true;

QueryBuilder.LOG_VALUES = true;

}

private void DeleteEmail() {

// daoSession.getUserDao().deleteByKey(id);

daoSession.getUserDao().deleteAll();

}

}

相关推荐

redis的八种使用场景

前言:redis是我们工作开发中,经常要打交道的,下面对redis的使用场景做总结介绍也是对redis举报的功能做梳理。缓存Redis最常见的用途是作为缓存,用于加速应用程序的响应速度。...

基于Redis的3种分布式ID生成策略

在分布式系统设计中,全局唯一ID是一个基础而关键的组件。随着业务规模扩大和系统架构向微服务演进,传统的单机自增ID已无法满足需求。高并发、高可用的分布式ID生成方案成为构建可靠分布式系统的必要条件。R...

基于OpenWrt系统路由器的模式切换与网页设计

摘要:目前商用WiFi路由器已应用到多个领域,商家通过给用户提供一个稳定免费WiFi热点达到吸引客户、提升服务的目标。传统路由器自带的Luci界面提供了工厂模式的Web界面,用户可通过该界面配置路...

这篇文章教你看明白 nginx-ingress 控制器

主机nginx一般nginx做主机反向代理(网关)有以下配置...

如何用redis实现注册中心

一句话总结使用Redis实现注册中心:服务注册...

爱可可老师24小时热门分享(2020.5.10)

No1.看自己以前写的代码是种什么体验?No2.DooM-chip!国外网友SylvainLefebvre自制的无CPU、无操作码、无指令计数器...No3.我认为CS学位可以更好,如...

Apportable:拯救程序员,IOS一秒变安卓

摘要:还在为了跨平台使用cocos2d-x吗,拯救objc程序员的奇葩来了,ApportableSDK:FreeAndroidsupportforcocos2d-iPhone。App...

JAVA实现超买超卖方案汇总,那个最适合你,一篇文章彻底讲透

以下是几种Java实现超买超卖问题的核心解决方案及代码示例,针对高并发场景下的库存扣减问题:方案一:Redis原子操作+Lua脚本(推荐)//使用Redis+Lua保证原子性publicbo...

3月26日更新 快速施法自动施法可独立设置

2016年3月26日DOTA2有一个79.6MB的更新主要是针对自动施法和快速施法的调整本来内容不多不少朋友都有自动施法和快速施法的困扰英文更新日志一些视觉BUG修复就不翻译了主要翻译自动施...

Redis 是如何提供服务的

在刚刚接触Redis的时候,最想要知道的是一个’setnameJhon’命令到达Redis服务器的时候,它是如何返回’OK’的?里面命令处理的流程如何,具体细节怎么样?你一定有问过自己...

lua _G、_VERSION使用

到这里我们已经把lua基础库中的函数介绍完了,除了函数外基础库中还有两个常量,一个是_G,另一个是_VERSION。_G是基础库本身,指向自己,这个变量很有意思,可以无限引用自己,最后得到的还是自己,...

China's top diplomat to chair third China-Pacific Island countries foreign ministers' meeting

BEIJING,May21(Xinhua)--ChineseForeignMinisterWangYi,alsoamemberofthePoliticalBureau...

移动工作交流工具Lua推出Insights数据分析产品

Lua是一个适用于各种职业人士的移动交流平台,它在今天推出了一项叫做Insights的全新功能。Insights是一个数据平台,客户可以在上面实时看到员工之间的交流情况,并分析这些情况对公司发展的影响...

Redis 7新武器:用Redis Stack实现向量搜索的极限压测

当传统关系型数据库还在为向量相似度搜索的性能挣扎时,Redis7的RedisStack...

Nginx/OpenResty详解,Nginx Lua编程,重定向与内部子请求

重定向与内部子请求Nginx的rewrite指令不仅可以在Nginx内部的server、location之间进行跳转,还可以进行外部链接的重定向。通过ngx_lua模块的Lua函数除了能实现Nginx...