关闭

XUtils数据库的操作

4111人阅读 评论(1) 收藏 举报
分类:
package qianfeng.day03_xutils_database;


import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;


import com.lidroid.xutils.DbUtils;
import com.lidroid.xutils.db.sqlite.Selector;
import com.lidroid.xutils.db.sqlite.WhereBuilder;
import com.lidroid.xutils.exception.DbException;


import org.w3c.dom.Text;


import java.util.List;


import qianfeng.day03_xutils_database.bean.User;


public class MainActivity extends AppCompatActivity {


    private DbUtils dbUtils;
    private LinearLayout mOperation;
    private TextView mTextContent;
    private String TAG = "MainActivity";


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mOperation = (LinearLayout) findViewById(R.id.operation);
        mTextContent = (TextView) findViewById(R.id.content_tv);


        //1、创建数据库
        createDatabase();
        //2、操作数据库


        setAllClick();


    }


    private void setAllClick() {
        mOperation.getChildAt(0).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                insert();
            }
        });
        mOperation.getChildAt(1).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                query();
            }
        });
        mOperation.getChildAt(2).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                update();
            }
        });
        mOperation.getChildAt(3).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                delete();
            }
        });
    }


    private int postion = 1;


    /**
     * 新增
     */
    private void insert(){
        User user = new User();
        try {
            user.setUsername("王思聪"+postion);
            user.setPassword("000000");
            user.setSex("未知");
            user.setAge(String.valueOf(20 + postion));
            dbUtils.save(user);
            postion++;
        } catch (DbException e) {
            e.printStackTrace();
        }
    }


    private int pages=0;
    private static final int  size = 10;
    /**
     * 查询
     */
    private void query(){
        try {
            //查找所有的
            List<User> all = dbUtils.findAll(User.class);
            Log.i(TAG,"all:"+all.size());
            Log.i(TAG,"last:"+all.get(all.size()-1).toString());


            //默认查询第一条
            User first = dbUtils.findFirst(User.class);
            Log.i(TAG,"first:"+first.toString());


            //条件查询 自定义查询状态
            User user = dbUtils.findFirst(Selector.from(User.class).orderBy("id", true));
            Log.i(TAG, "last user:" + user.toString());


            List<User> users = dbUtils.findAll(Selector.from(User.class).where("id", ">", "15").orderBy("id", true).limit(size).offset(pages * size));


            for (User u : users) {
                Log.i(TAG, "users:" + u.toString());
            }
            pages++;
        } catch (DbException e) {
            e.printStackTrace();
        }


    } /**
     * 更新
     */
    private void update(){
        try {
            User first = dbUtils.findFirst(User.class);
            first.setUsername("王某某某某");
            first.setAge("50+++");
            first.setSex("男篮篮");
            dbUtils.saveOrUpdate(first);


//            dbUtils.update(first,"sex");
//            dbUtils.updateAll();      更新一票数据
//            dbUtils.saveOrUpdateAll();       更新一票数据 如果不存在 新增
        } catch (DbException e) {
            e.printStackTrace();
        }


    } /**
     * 删除
     */
    private void delete(){
        User user = new User();


        try {
//            dbUtils.delete(User.class, WhereBuilder);     //删除 你需要的指定条件的条目
//            dbUtils.delete(Object);       //直接删除某一个 与 数据库 相同的对象
//            dbUtils.deleteById(Class,Object);    //删除某个表中的 指定ID的数据
//            dbUtils.deleteAll(List);      //删除 某一部分 的数据
            dbUtils.deleteAll(User.class);
        } catch (DbException e) {
            e.printStackTrace();
        }
    }




    private void createDatabase() {
        //1
        dbUtils = DbUtils.create(this);
        /**
         //2
         DbUtils.create(this,"数据库名称");
         //3
         DbUtils.create(this,"存储位置","数据库名称");
         //4
         int 数据库版本 = 1;
         DbUtils.DbUpgradeListener 数据库更新监听 = new DbUtils.DbUpgradeListener() {
        @Override public void onUpgrade(DbUtils dbUtils, int i, int i1) {


        }
        };
         DbUtils.create(this,"数据库名称",数据库版本,数据库更新监听);
         //5
         DbUtils.create(this, "数据库地址", "数据库名称", 数据库版本, 数据库更新监听);


         DbUtils.DaoConfig config = new DbUtils.DaoConfig(this);
         config.setDbDir();  //设置数据库存储路径
         config.setDbName(); //设置数据库名称
         config.setDbVersion();  //设置数据库版本
         config.setDbUpgradeListener();  //设置更新监听


         **/
    }

}




需要的权限

<uses-permissionandroid:name="android.permission.INTERNET"/>

    <uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/>


创建数据库

  DaoConfig config = new DaoConfig(context);

  config.setDbName("xUtils-demo"); //db名

  config.setDbVersion(1);  //db版本

  DbUtils db = DbUtils.create(config);//db还有其他的一些构造方法,比如含有更新表版本的监听器的


创建表

  db.createTableIfNotExist(User.class); //创建一个表User

    db.save(user);//在表中保存一个user对象。最初执行保存动作时,也会创建User表


删除表

  db.dropTable(User.class); 


开启事务

  db.configAllowTransaction(true);


db相关Annotation

  @Check    check约束
  @Column   列名
  @Finder   一对多、多对一、多对多关系(见sample的Parent、Child中的使用)
  @Foreign  外键
  @Id       主键,当为int类型时,默认自增。 非自增时,需要设置id的值
  @NoAutoIncrement  不自增
  @NotNull  不为空
  @Table    表名
  @Transient  不写入数据库表结构
  @Unique   唯一约束


一些常用方法

DbUtils db = DbUtils.create(this);
User user = new User(); //这里需要注意的是User对象必须有id属性,或者有通过@ID注解的属性
user.setEmail("wyouflf@qq.com");
user.setName("wyouflf");
db.save(user); // 使用saveBindingId保存实体时会为实体的id赋值

...
// 查找
Parent entity = db.findById(Parent.class, parent.getId());
List<Parent> list = db.findAll(Parent.class);//通过类型查找

Parent Parent = db.findFirst(Selector.from(Parent.class).where("name","=","test"));

// IS NULL
Parent Parent = db.findFirst(Selector.from(Parent.class).where("name","=", null));
// IS NOT NULL
Parent Parent = db.findFirst(Selector.from(Parent.class).where("name","!=", null));

// WHERE id<54 AND (age>20 OR age<30) ORDER BY id LIMIT pageSize OFFSET pageOffset
List<Parent> list = db.findAll(Selector.from(Parent.class)
                                   .where("id" ,"<", 54)
                                   .and(WhereBuilder.b("age", ">", 20).or("age", " < ", 30))
                                   .orderBy("id")
                                   .limit(pageSize)
                                   .offset(pageSize * pageIndex));

// op为"in"时,最后一个参数必须是数组或Iterable的实现类(例如List等)
Parent test = db.findFirst(Selector.from(Parent.class).where("id", "in", new int[]{1, 2, 3}));
// op为"between"时,最后一个参数必须是数组或Iterable的实现类(例如List等)
Parent test = db.findFirst(Selector.from(Parent.class).where("id", "between", new String[]{"1", "5"}));

DbModel dbModel = db.findDbModelAll(Selector.from(Parent.class).select("name"));//select("name")只取出name列
List<DbModel> dbModels = db.findDbModelAll(Selector.from(Parent.class).groupBy("name").select("name", "count(name)"));
...

List<DbModel> dbModels = db.findDbModelAll(sql); // 自定义sql查询
db.execNonQuery(sql) // 执行自定义sql
...

2
0
查看评论

xUtils2和xUtils3的使用及区别

xutils2和xutil3的总结
  • Tenderness4
  • Tenderness4
  • 2016-08-10 23:18
  • 2409

XUtils3.0数据库操作心得

XUtils3.0学习心得 DB注释相关 1.加注了@Table的实体类将被映射到sqlite中的数据库表,@Table注解有属性name和onCreated两个属性,name属性决定了该实体类映射的数据库表名,而onCreated属性则可以用来添加表一级的属性或约束,例如创建联和唯一索引等 2.加...
  • M_GSir
  • M_GSir
  • 2016-03-23 16:53
  • 10768

xUtils中的DbUtils内部常用方法分类

1.DaoConfig类(数据库的配置类,属于DbUtils内部类)      1)成员变量:    dbName :数据库名称,默认为“xUtils.db”    dbVersion :数据库版本号    d...
  • xupingwei000
  • xupingwei000
  • 2015-04-22 16:10
  • 954

Xutils3总结2之数据库

1,什么叫事务? 把N多次操作作为一个整体,从第一个执行到最后一个不可以中断,多个事务之间相互独立互不干扰,事务中始终保持数据的一致性。 2,Xutils3之数据库中: ~1,在开启数据库时添加一个监听,在监听中添加:db.getDatabase().enableWriteAheadLo...
  • PsEmperor
  • PsEmperor
  • 2016-11-29 16:36
  • 433

xutils使用手册(二)——数据库

Xutils使用手册Xutils对数据库的增删改查Xutils使用手册 Xutils对数据库的增删改查 一初始化数据库 二创建一个数据表模型类 三简单的UI布局搭建 三Java代码 增 删 改 查 附上MainActivity的完整代码 四效果演示 结语一定要看在上一篇博客中我们讲到了怎么在Andr...
  • qq_32583189
  • qq_32583189
  • 2016-05-16 10:33
  • 3786

xUtils3中对Sqlite数据库的操作

前言xUtils是一款快速开发android移动应用的框架,其包含了很多实用的android工具. 目前xUtils主要有四大模块: DbUtils模块 ViewUtils模块 HttpUtils模块 BitmapUtils模块 xUtils项目github请见:xUt...
  • tyBaoErGe
  • tyBaoErGe
  • 2015-12-27 22:35
  • 24953

android xUtils 数据库修改之一行代码增删改查

  • 2015-11-02 11:13
  • 790KB
  • 下载

Xutils3关于数据库的操作

撸一发Xutils3的数据库操作使用 有关配置就不多说了 ,可以看官方的github说明文档
  • zhou_anzhuojinjie
  • zhou_anzhuojinjie
  • 2017-01-12 11:13
  • 348

xutils3框架之数据库使用详解!

这段时间公司做项目,基本每天都要和数据库打交道,当初选择使用xutils3框架;刚开始使用的时候,也是遇到很多坑,小弟在此一一总结一下,希望能帮到大家,顺便自己也做个笔记。 如何导入SDK我就不说了,先从初始化说起。一般三方的东西最好都是在application里面完成,代码如下: daoConf...
  • L_xiaole
  • L_xiaole
  • 2016-08-11 14:49
  • 9622

Android xUtils框架(一) DbUtils

框架地址:https://github.com/wyouflf/xUtils 需要的权限 uses-permission android:name="android.permission.INTERNET" />     uses-permission ...
  • jjwwmlp456
  • jjwwmlp456
  • 2015-03-05 18:41
  • 37088
    个人资料
    • 访问:18273次
    • 积分:405
    • 等级:
    • 排名:千里之外
    • 原创:22篇
    • 转载:12篇
    • 译文:0篇
    • 评论:1条
    文章存档
    最新评论