Android SQL数据库操作(使用xUtils3)_android sqlutil-程序员宅基地

技术标签: 数据  android  数据库  Android  sql  

Android SQL数据库操作(使用xUtils3)

目录


基础配置

xUtils3地址:
https://github.com/wyouflf/xUtils3/tree/master

使用Gradle构建时添加一下依赖即可:


compile 'org.xutils:xutils:3.5.0'

需要的权限

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

初始化


// 在application的onCreate中初始化
@Override
public void onCreate() {
    super.onCreate();
    x.Ext.init(this);
    x.Ext.setDebug(BuildConfig.DEBUG); // 是否输出debug日志, 开启debug会影响性能.
        setDaoConfig();//配置数据库参数 创建数据库
}

//获取数据库操作对象
    public DbManager getDbManager() {
        return db;
    }

    public static void setDaoConfig() {
        DbManager.DaoConfig daoConfig = new DbManager.DaoConfig()
                .setDbName("sql.db")
                // 不设置dbDir时, 默认存储在app的私有目录.
                //.setDbDir(new File(Constant.PATH_DB))
                //数据库版本可使用app版本号
                .setDbVersion(1)
                //开启事务
                .setAllowTransaction(true)
                .setDbOpenListener(new DbManager.DbOpenListener() {
                    @Override
                    public void onDbOpened(DbManager db) {
                        // 开启WAL, 对写入加速提升巨大
                        db.getDatabase().enableWriteAheadLogging();
                    }
                })
                .setDbUpgradeListener(new DbManager.DbUpgradeListener() {
                    @Override
                    public void onUpgrade(DbManager db, int oldVersion, int newVersion) {
                        // 版本升级监听 可添加字段 删除表 删除数据库等 

                        // db.addColumn(...);
                        // db.dropTable(...);
                        // db.dropDb();
                    }
                });
        db = x.getDb(daoConfig);
    }

基础类

@Table(name = "student")
public class StudentBean {
    
    @Column(name = "id", isId = true)
    private int id;
    @Column(name = "name")
    private String name;
    @Column(name = "age")
    private int age;
    @Column(name = "sex")
    private String sex;

  //重写setget方法

基本操作

保存一条数据
public class StudentSql {

    DbManager db;

    public StudentSql(DbManager db) {
        this.db = db;
    }

    //保存一条数据
    public void save(final StudentBean bean) {
        try {
            db.save(bean);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
        StudentSql    sql = new StudentSql(MyApp.getInstance().getDbManager());
        StudentBean bean=new StudentBean();
        bean.setName("张三");
        bean.setAge(18);
        bean.setSex("男");
        sql.save(bean);

这里写图片描述

保存一组数据
    //保存一组数据
    public void saveList(ArrayList<StudentBean> list) {
        try {
            db.save(list);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    private void addData() {
        StudentBean bean = new StudentBean();
        bean.setName("张三");
        bean.setAge(18);
        bean.setSex("男");
        StudentBean bean1 = new StudentBean();
        bean1.setName("李四");
        bean1.setAge(19);
        bean1.setSex("男");
        StudentBean bean2 = new StudentBean();
        bean2.setName("王五");
        bean2.setAge(20);
        bean2.setSex("男");
        ArrayList<StudentBean> list=sql.selectorAll();
        list.add(bean);
        list.add(bean1);
        list.add(bean2);
        sql.saveList(list);
    }

这里写图片描述

删除一条数据
    //删除某个
    public void delete(final StudentBean StudentBean) {
        try {
            db.delete(StudentBean);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

删除某条数据需要确定其ID

    private void del_data() {
        StudentBean bean1 = new StudentBean();
        bean1.setId(2);
//        bean1.setName("李四");
//        bean1.setAge(19);
//        bean1.setSex("男");
        sql.delete(bean1);
    }

这里写图片描述

删除所有
    //删除所有
    public void deleteAll() {
        try {
            db.dropTable(StudentBean.class);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

删除所有 就是删除表

删除一组数据
    public void deleteList(ArrayList<StudentBean> list) {
        try {
            db.delete(list);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
条件删除
    //删除某个
    public void deleteOpt() {
        try {
            db.delete(StudentBean.class, WhereBuilder.b("name", "in", new String[]{
   "张三"}));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

删除名字叫张三的数据
这里写图片描述

    //删除某个
    public void deleteOpt() {
        try {
            db.delete(StudentBean.class, WhereBuilder.b("age", ">", 18));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

删除年龄大于18的
这里写图片描述

修改一条数据
    //修改数据
    public void up(StudentBean newBean) {
        try {
            db.update(newBean);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

修改数据有id判断数据是否存在

    private void upData() {
        StudentBean bean1 = new StudentBean();
        bean1.setId(2);
        bean1.setName("赵六");
        bean1.setAge(19);
        bean1.setSex("女");
        sql.up(bean1);
    }

这里写图片描述

批量修改数据
 //修改数据
    public void upOpt() {
        try {
            db.update(StudentBean.class,WhereBuilder.b("age", ">", 18),new KeyValue("age", 16));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

这里写图片描述

查询所有数据
    //查找所有
    public ArrayList<StudentBean> selectorAll() {
        ArrayList<StudentBean> children = new ArrayList<StudentBean>();
        ;
        try {
            children = (ArrayList<StudentBean>) db.selector(StudentBean.class).findAll();
            if (children == null) {
                return new ArrayList<>();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return children;
    }
查询某条
    //查找某个

    public StudentBean selectorFirst() {

        StudentBean bean = new StudentBean();
        try {
            bean = db.selector(StudentBean.class).where("name", "in", new String[]{
   "张三"}).findFirst();
            return bean;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
模糊查询
 public ArrayList<StudentBean> selectorOpt() {

        ArrayList<StudentBean> children = new ArrayList<StudentBean>();
        try {
            children = (ArrayList<StudentBean>) db.selector(StudentBean.class)
                    .where("name", "LIKE", "张%")
                    .findAll();
            if (children == null) {
                return new ArrayList<>();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return children;
    }
条件查询
 public ArrayList<StudentBean> selectorOpt1() {

        ArrayList<StudentBean> children = new ArrayList<StudentBean>();
        try {
            children = (ArrayList<StudentBean>) db.selector(StudentBean.class)
                    .where("age", "between", new int[]{
   19, 20})
                    .findAll();
            if (children == null) {
                return new ArrayList<>();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return children;
    }
分组查询
public void selectotGroupBy() {

        try {
            List<DbModel> dbModels = db.selector(StudentBean.class)
                    .groupBy("age")
                    .select("age").findAll();

            for (int i = 0; i < dbModels.size(); i++) {
    
//                System.out.println(dbModels.get(i).getDataMap().toString());
                System.out.println(dbModels.get(i).getString("age"));
            }
        } catch (DbException e) {
            e.printStackTrace();
        }
    }
查询数量
        long sum=db.selector(StudentBean.class).count();

其他

排序
orderBy("id")
指定数量
limit(10)
指定位置
offset(5)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_28934205/article/details/78032866

智能推荐

ffmpeg音视频处理流程核心技术_视频效果演示系统的核心技术-程序员宅基地

文章浏览阅读712次。视频播放器原理 什么是ffmpeg? ffmpeg 音视频编/解码 流程图 ffmpeg 常用 struct AVFormatContext AVStream AVCodecContext AVCodec AVPacket AVFrame ffmpeg 常用Api av_register_all() avformat_alloc_output_context2() avio_open()..._视频效果演示系统的核心技术

Java List集合多种情况处理方法_java list reduce-程序员宅基地

文章浏览阅读449次。Java List集合多种情况处理方法:List集合交集、并集、差集、去重、与数组互转、删除、排序等操作_java list reduce

【UML】软件需求说明书_uml需求文档访客管家-程序员宅基地

文章浏览阅读2.3k次,点赞77次,收藏80次。需求:指人对客观事务需要的表现,体现为愿望、意向和兴趣,因而成为行动的一种直接原因。软件需求(IEEE软件工程标准词汇表):(1)用户解决问题或达到目标所需的条件或能力。(2)系统或系统部件要满足合同、标准、规范或者其他正式规定文档所需具有条 件或能力。(3)对(1)或(2)中的一个条件或一种能力的一种文档化表述。用例:定义 1 用例是对一个活动者使用一个系统的一项功能时进行交互过程中的一个文字描述序列。_uml需求文档访客管家

linux笔记-根文件系统及文件管理命令详解_根文件系统文本登陆-程序员宅基地

文章浏览阅读574次。第三章、Linux根文件系统及文件管理命令详解02_03_Linux根文件系统详解文件系统:rootfs: 根文件系统 FHS:Filesystem Hierarchy Standard(文件系统目录标准)的缩写,多数Linux版本采用这种文件组织形式,类似于Windows操作系统中c盘的文件目录,FHS采用树形结构组织文件。FHS定_根文件系统文本登陆

马克 · 扎克伯格期望的元宇宙到底会是什么样子?_马克扎克伯格博客-程序员宅基地

文章浏览阅读358次。马克 · 扎克伯格期望的元宇宙到底会是什么样子?_马克扎克伯格博客

使用Python开发游戏运行脚本(二)实现模拟点击_大漠窗口绑定成功按键-程序员宅基地

文章浏览阅读1.4w次,点赞8次,收藏78次。本文接上一篇文章 使用Python开发游戏运行脚本(一)成功调用大漠插件上一篇我们已经简单实现了python调用大漠插件并输出版本号的功能,接下来我们要做的就是通过大漠插件模拟鼠标点击和键盘文字输入。 由于近年来最热门的游戏基本都是手游,所以我们也会以手游为例来进行游戏脚本的开发。大漠插件是一款针对Windows平台的鼠标键盘模拟+图文查找库,这样我们要想实现手游脚本开发的第一步,就是下载Android模拟器,然后在对安卓模拟器进行鼠标和键盘的模拟,以此来实现自动化游戏脚本。一、Android模拟器的_大漠窗口绑定成功按键

随便推点

Canvas实现黑客帝国字符雨_canvas画字符雨-程序员宅基地

文章浏览阅读1k次。 利用Canvas的fillText(),隔一定时间在画布上作画&lt;!DOCTYPE html&gt;&lt;head&gt; &lt;meta charset="utf-8"&gt; &lt;meta name="viewport" content="width=device-width,initial-scale=1.0"&gt; &_canvas画字符雨

微信公众号跳转微信小程序,自定义微信跳转标签_opentaglist-程序员宅基地

文章浏览阅读1.1k次。微信公众号跳转微信小程序,自定义微信跳转标签_opentaglist

数据恢复技术与LVM数据恢复方法_vgreduce --removemissing恢复-程序员宅基地

文章浏览阅读4.3k次。数据恢复技术与LVM数据恢复方法 1摘要 随着计算机网络应用的发展,数据存储的安全性变的越来越重要。在常见的基于RAID和LVM的环境下面,当出现硬盘故障或者错误操作导致数据丢失的情况下,采用适当的数据恢复策略可以在很大程度上提供数据恢复的成功概率。本文研究了几种情况下的数据恢复技术和方法,为数据恢复和数据安全的预防提供了指导。 2数据恢复需求 2.1Linux IO存储栈 图(1)Linux IO 存储..._vgreduce --removemissing恢复

程序员如何年薪百万?深度学习必读书籍!_年薪百万的程序员看什么书-程序员宅基地

文章浏览阅读307次。深度学习程序员想年薪百万,基础必须打牢,所以推荐重点书籍Deep Learning花书Deep Learning with PythonDeep Learning for Computer Vision with PythonScikit-Learn与TensorFLow机器学习实用指南深度学习实践Tensorflow机器学习指南..._年薪百万的程序员看什么书

Window系统下C/C++程序毫秒和微秒级程序运行时间的获取方法_large_integer nfreq, t1, t2;-程序员宅基地

文章浏览阅读1.3k次。一、使用clock()函数,获取毫秒级(ms)时间[1]#include &lt;time.h&gt;//clock()头文件clock_t start = clock();{statement section}//测试代码段clock_t end = clock();printf("the running time is :%fs\n", (double)(end -s..._large_integer nfreq, t1, t2;

IntelliJ IDEA 使用教程-- 从入门到上瘾(配套视频教程)_idea使用视频教程-程序员宅基地

文章浏览阅读6.8k次,点赞3次,收藏31次。 前言: 至于用哪个开发工具本文暂且不做任何讨论, 今天着重讲解IntelliJ IDEA这款开发工具的使用 前言:IntelliJ IDEA如果说IntelliJ IDEA是一款现代化智能开发工具的话,Eclipse则称得上是石器时代的东西了。其实笔者也是一枚从Eclipse转IDEA的探索者,随着近期的不断开发实践和调试,逐步..._idea使用视频教程

推荐文章

热门文章

相关标签