android数据保存之greendao
2024-10-19 00:24:33
有时我们的数据属于保存到数据库,对于Android应用和IOS应用,我们一般都会使用SQLite这个嵌入式的数据库作为我们保存数据的工具。由于我们直接操作数据库比较麻烦,而且管理起来也非常的麻烦,以前用ormlite,最近项目尝试用greendao来保存数据。
使用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'
在src/main下创建一个java-gen的包,用于生成我们的bean类文件
创建Dao的生成类文件YeehotGeneratorDao.java,用于生成上面说的几个类。这里我直接在项目里面创建了。
<span style="font-size:14px;">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"); } private static void addTable(Schema schema) { // 创建一个实体,其实就是表名 Entity User = schema.addEntity("User"); //添加表的属性。 User.addIdProperty(); //添加字符串的属性 User.addStringProperty("email").notNull(); User.addStringProperty("passwd"); User.addStringProperty("userid"); } }</span>
运行一下YeehotGeneratorDao
怎么用呢
<span style="font-size:14px;">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(); } }</span><strong style="font-size: 16px;"> </strong>
最新文章
- css3全屏背景图片切换特效
- 【转】UML类图与类的关系详解
- android开源项目和框架
- Linux C编程一站式学习
- Java使用memcached
- 本地windows下PHP连接远程oracle遇到的诸多问题
- 微软 Dynamics AX 学习步骤
- HTML系列(四):编辑图像
- Tree(uva 536)
- Django实现组合搜索
- 学习-xlsxwriter模块
- Tomcat connectionTimeout问题定位处理
- VS中空项目、win32项目、控制台程序的区别(转)
- Redis更新的正确方法
- SqlServer 对分组的内容进行拼接-group_concat
- Linux基础命令---文本过滤coi
- 吴裕雄 python 爬虫(2)
- 如何去掉jQWidgets中TreeGrid和Grid右下角的链接
- vue-cli 上手
- noip2010初赛提高组 试题详解
热门文章
- RDO Stack: Install newton in the dashboard can&#39;t create images
- Android 5.0新控件——FloatingActionButton(悬浮按钮)
- 将树形递归转换为loop
- SQL语句常见问题的总结(持续更新)
- 学习Android路上的一些感慨和总结,慢慢来,比较快!
- SQL Server 执行计划操作符详解(3)——计算标量(Compute Scalar)
- Android触摸屏幕时间-android学习之旅(三)
- 4.QT中进程操作,线程操作
- Socket接收器——Acceptor
- listview下拉刷新上拉加载扩展(一)