Android中SQLite数据库查询详解

这篇具有很好参考价值的文章主要介绍了Android中SQLite数据库查询详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

SQLite在线教程网址https://www.yiibai.com/sqlite

SQLite中查询方法query()

query(String table, String[] columns, String selection, String [] selectionArgs, String  groupBy,  String having, String orderBy, String  limit)
  • table :表名。相当于select *** from table语句中的table 。如果是多表联合查询,可以用逗号将两个表名分开。
  • columns :要查询出来的列名(字段),全部查询就写null。相当于 select *** from table语句中的 ***部分 。如果是查询多个参数,可以用逗号将两个表名分开。例:new String[]{“name”,“age”,“sex”}
  • selection:查询条件子句,相当于select *** from table where && 语句中的&&部分,在条件子句允许使用占位符“?”表示条件值 ,例:“name=?,age=?,sex=?”
  • selectionArgs :查询条件对应的内容。对应于 selection参数 占位符的值,值在数组中的位置与占位符在语句中的位置必须一致,否则就会有异常。 例:与 new String[]{“lisa”,“1”,“女”}
  • groupBy :分组。相当于 select *** from table where && group by … 语句中 … 的部分 ,作用是:将同一列的相同名字的参数合并在一起 例;在name列有两个Jame(name:Jame --salay:100,name:Jame --salay:200),使用…group by name查询后 只显示一个Jame的集合(name:Jame–salay:300)
  • having :相当于 select *** from table where && group by …having %%% 语句中 %%% 的部分, 作用于groupBy的条件,例:havig name>2意思是name列相同参数>2
  • orderBy :相当于 select ***from ?? where&& group by …having %%% order by@@语句中的@@ 部分,如: personid desc(按person 降序), age asc(按age升序);
  • limit:指定偏移量和获取的记录数,查询显示的条数(分页,可以不写,默认全部显示)。相当于select语句limit关键字后面的部分。

查询全部数据示例

    /**
     * 查询全部数据
     */
    public List<PersonModel> queryAllPersonData(){

        //查询全部数据
        Cursor cursor = getWritableDatabase().query(TABLE_NAME_PERSON,null,null,null,null,null,null,null);
        List<PersonModel> list = new ArrayList<>();
        if(cursor.getCount() > 0)
        {
            //移动到首位
            cursor.moveToFirst();
            for (int i = 0; i < cursor.getCount(); i++) {

                int id = cursor.getInt(cursor.getColumnIndex(VALUE_ID));
                String name = cursor.getString(cursor.getColumnIndex(VALUE_NAME));
                int isBoy = cursor.getInt(cursor.getColumnIndex(VALUE_ISBOY));
                int age = cursor.getInt(cursor.getColumnIndex(VALUE_AGE));
                String address = cursor.getString(cursor.getColumnIndex(VALUE_ADDRESS));
                byte pic[] = cursor.getBlob(cursor.getColumnIndex(VALUE_PIC));

                PersonModel model = new PersonModel();
                model.setId(id);
                model.setName(name);
                model.setIsBoy(isBoy);
                model.setAge(age);
                model.setAddress(address);
                model.setPic(pic);

                list.add(model);
                //移动到下一位
                cursor.moveToNext();
            }
        }

        cursor.close();
        getWritableDatabase().close();

        return list;
    }

一些查询用法示例

    /**
     * 一些查询用法
     */
    public void queryPersonData()
    {

        //查询全部数据
        getWritableDatabase().query(TABLE_NAME_PERSON,null,null,null,null,null,null);
        //查询 _id = 1 的数据
        getWritableDatabase().query(TABLE_NAME_PERSON,null,VALUE_ID+"=?",new String[]{"1"},null,null,null);

        //查询 name = 张三 并且 age > 23 的数据
        getWritableDatabase().query(TABLE_NAME_PERSON,null,VALUE_NAME+"=?"+" and "+VALUE_AGE+">?",new String[]{"张三","23"},null,null,null);

        //查询 name = 张三 并且 age > 23 的数据  并按照id 降序排列
        getWritableDatabase().query(TABLE_NAME_PERSON,null,VALUE_NAME+"=?"+" and "+VALUE_AGE+">?",new String[]{"张三","23"},null,null,VALUE_ID+" desc");

        //查询数据按_id降序排列 并且只取前4条。
        getWritableDatabase().query(TABLE_NAME_PERSON,null,null,null,null,null,VALUE_ID+" desc","0,4");

    }

rawQuery查询

rawQuery()是自己要写sql语句查询,query()也是在源码里合成sql语句的。所以自己写sql语句更加高效。
public Cursor rawQuery(String sql, String[] selectionArgs)

rawQuery方法至少有两个参数。使用:

SQLiteDatabase db= ....;
Cursor cursor = db.rawQuery("select * from person",null);
...
cursor.close();
db.close();
  • rawQuery()方法的第一个参数为select语句;
  • 第二个参数为select语句中占位符参数的值,如果select语句没有使用占位符,该参数可以设置为null
    带占位符参数的select语句使用例子如下:
    Cursor cursor = db.rawQuery("select * from person where name like ? and age=?", new String[]{"张三", "4"});

select语句查询

  /**
     * rawQuery()方法查询
     *
     * 一些查询用法
     *
     * 容易出错,万千注意。
     *
     * 注意空格、单引号、单词不要写错了。
     *
     */
    public Cursor rawQueryPersonData() {

        Cursor cursor = null;
        String rawQuerySql = null;

        //查询全部数据  select * from person 
        rawQuerySql =  "select * from "+TABLE_NAME_PERSON;
        //查询_id = 1 的数据  select * from person where _id = 1
        rawQuerySql = "select * from "+TABLE_NAME_PERSON+" where "+VALUE_ID +" = 1";

        //查询 name = 张三 并且 age > 23 的数据  通配符? select * from person where name = ? and age > ?
        rawQuerySql = "select * from "+TABLE_NAME_PERSON+" where "+VALUE_NAME +" = ?"+" and "+ VALUE_AGE +" > ?";
//        cursor = getWritableDatabase().rawQuery(rawQuerySql,new String[]{"张三","23"});

        //查询 name = 张三 并且 age >= 23 的数据  select * from person where name = '张三' and age >= '23'
        rawQuerySql = "select * from "+TABLE_NAME_PERSON+" where "+VALUE_NAME +" = '张三'"+" and "+ VALUE_AGE +" >= '23'";

        //查询 name = 张三 并且 age >= 23 的数据  并按照id 降序排列  select * from person where name = '张三' and age >= '23' order by _id desc
        rawQuerySql = "select * from "+TABLE_NAME_PERSON+" where "+VALUE_NAME +" = '张三'"+" and "+ VALUE_AGE +" >= '23'"+" order by "+VALUE_ID +" desc";

        //查询数据按_id降序排列 并且只取前4条。(测试下标是从0开始)  select * from person order by _id desc limit 0, 4
        rawQuerySql = "select * from "+TABLE_NAME_PERSON+" order by "+VALUE_ID +" desc"+" limit 0, 4";

        //查询年龄在20岁以上或者是女生 的数据 select age,isboy from person where age > 20 or isboy != 1
        rawQuerySql = "select "+VALUE_AGE+","+VALUE_ISBOY +" from " +TABLE_NAME_PERSON+" where "+VALUE_AGE+" > 20"+" or "+VALUE_ISBOY +" != 1";

        //查询年龄小于等于20 或者 大于等于 80的数据 并且按年龄升序排列 select * from person where age <= 20 or age >=80 order by age asc
        rawQuerySql = "select * from "+TABLE_NAME_PERSON+" where "+VALUE_AGE+" <= 20"+" or "+VALUE_AGE+" >=80"+" order by "+VALUE_AGE+" asc";

        cursor = getWritableDatabase().rawQuery(rawQuerySql,null);

        Log.e(TAG, rawQuerySql );

        return cursor;

    }

Android SQLite的增删改查详解链接

SQLite数据库,创建表
SQLite数据库,添加数据
SQLite数据库 删除数据 where多条件删除数据
SQLite数据库 修改数据
SQLite数据库 更新

本文参考:
http://blog.csdn.net/kongxiuqi/article/details/50528005
https://www.jianshu.com/p/4f67e8c3463b
---------感谢前辈文章来源地址https://www.toymoban.com/news/detail-795348.html

到了这里,关于Android中SQLite数据库查询详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [Android Studio]Android 数据存储--SQLite数据库存储

     🟧🟨🟩🟦🟪 Android Debug 🟧🟨🟩🟦🟪 Topic   发布安卓学习过程中遇到问题解决过程,希望我的解决方案可以对小伙伴们有帮助。 💯实战演练--基于SQLite数据库的通讯录实现数据的增删改查 1,创建程序 2,放置界面控件 3,编写界面交互代码 4, 核心方法讲解 5,数据库

    2024年02月08日
    浏览(52)
  • Android 进阶 1、sqlite数据库

    在我们学会了Android的基本使用之后就需要往高处发展了,毕竟水往高处流,很多时候我们学习一门技术感觉没有收获都是因为还没到那个层次,当你一步步往上走的时候就会渐渐发现自己收获的越来越多,进步也就会越来越快了,废话不多说,回到正题; 1、认识数据库 安卓

    2024年02月10日
    浏览(48)
  • Android之SQLite数据库使用

    SQLite是Android系统集成的一个轻量级的数据库。 Android提供了 SQLiteDatabase代表一个数据库 (底层就是一个数据库文件),一旦应用程序获得了代表指定数据库的SQLiteDatabase对象,接下来可通过SQLiteDatabase对象来管理、操作数据库了。 Android为了让我们能够更加方便地管理数据库,

    2024年02月16日
    浏览(51)
  • Android studio 连接SQLite数据库 +创建数据库+创建数据库表

    Android studio 之数据库的使用 连接创建SQLite 大家好,欢迎来到寒依。 相信看啦我的教程 当老师问你在学习Android studio 数据库使用过程中遇到什么困难,分享一下你的感悟和解决方法 的时候,你可以直接大胆的说出来: “老师我没有遇到问题,看啦寒依的教程 畅行无阻” 我

    2024年02月02日
    浏览(55)
  • Android studio引入外部SQLite数据库,获取数据库列表数据

    准备好Android studio和一个创建管理数据库的软件,推荐SQLite Expert Professional或者Navicat Premium。这里以SQLite Expert Professional为例。 1.穿件sqlite数据库,按照自己的项目要求定义数据库和相应的数据表 1.在main目录下创建assets文件,将准备好的sqlite数据库文件放入这个目录下 解释:

    2024年02月08日
    浏览(58)
  • Android开发——SQLite数据库的使用

    1、SQLite的特性 SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库不一样,您不需要在系统中配置。 SQLite 引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。

    2024年02月15日
    浏览(48)
  • Android Studio使用SQLite数据库

    1.能使用SQLiteDatabase类操作数据库与表 2.能使用SQLiteDatabaseHelper类操作数据库与表 无论是安卓应用还是苹果应用,都提供了本地轻量级数据库——SQLite,可以创建和删除数据库,还能对数据表进行增删改查操作。 SQLite由SQL编译器、内核、后端以及附件几个部分构成。SQLite通过

    2024年02月01日
    浏览(48)
  • C++中SQLite数据库操作实例:查询、增加、修改、删除一网打尽

      在C++中使用SQLite数据库需要使用SQLite的C/C++接口。以下是一个简单的示例,演示如何在C++中使用SQLite,并提供了常见的查询、增加、修改和删除功能。为了使用SQLite,你需要下载SQLite的C/C++接口,并链接到你的项目中。 首先,确保你已经下载了SQLite的C/C++接口,然后将头文件

    2024年02月04日
    浏览(50)
  • 鸿蒙harmony--数据库sqlite详解

    今天是1月20号星期六,早安,岁末大寒至,静后春归来。愿他乡故人,漂泊有归宿,前程有奔赴,愿人间不寒,温暖常伴,诸事顺利,喜乐长安。  目录 一,定义 二,运作机制 三,约束限制 四,接口说明 五,开发步骤 5.1 获取数据库 5.2 创建数据库表 5.3 数据库升降级 5.4插

    2024年01月21日
    浏览(41)
  • Android中SQLite数据库增删改查/使用ListView显示数据库内容(有完整源码)

    android作业笔记 编写SQLite数据库相关操作的代码,实现下图中的功能(第一排按钮布局没有调整屏幕大小适配…不过下面那一排加了 android:layout_weight=“1”) SQLite展示 先上源码:https://gitee.com/meng-fanyang/SQLiteWork 里边有三个分支,对应这不同的写法: master主分支是写的可以说

    2024年02月09日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包