开发者社区> 游客ytudqddg72jbc> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

【鸿蒙】数据库--查询数据

简介: 3.查询 关系型数据库提供了两种查询数据的方式: 直接调用查询接口。使用该接口,会将包含查询条件的谓词自动拼接成完整的SQL语句进行查询操作,无需用户传入原生的SQL语句。 执行原生的SQL语句进行查询操作。
+关注继续查看

3.查询

关系型数据库提供了两种查询数据的方式:

  • 直接调用查询接口。使用该接口,会将包含查询条件的谓词自动拼接成完整的SQL语句进行查询操作,无需用户传入原生的SQL语句。
  • 执行原生的SQL语句进行查询操作。

(1)谓词使用

关系型数据库提供了用于设置数据库操作条件的谓词AbsRdbPredicates,其中包括两个实现子类RdbPredicates和RawRdbPredicates:


  • RdbPredicates:开发者无需编写复杂的SQL语句,仅通过调用该类中条件相关的方法,如equalTo、notEqualTo、groupBy、orderByAsc、beginsWith等,就可自动完成SQL语句拼接,方便用户聚焦业务操作。
  • RawRdbPredicates:可满足复杂SQL语句的场景,支持开发者自己设置where条件子句和whereArgs参数。不支持equalTo等条件接口的使用。


类名接口名描述
RdbStoreResultSet query(AbsRdbPredicates predicates, String[] columns)

查询数据。predicates:谓词,可以设置查询条件。AbsRdbPredicates的实现类有两个:RdbPredicates和RawRdbPredicates。RdbPredicates:支持调用谓词提供的equalTo等接口,设置查询条件。RawRdbPredicates`:仅支持设置表名、where条件子句、whereArgs三个参数,不支持equalTo等接口调用。columns:规定查询返回的列。


RdbStoreResultSet querySql(String sql, String[] sqlArgs)


RdbPredicates提供了很多的方法。简单点说就是设置获取数据的条件


image


这里只用了几种 ,感兴趣的可以去多了解

关系型数据库提供了查询返回的结果集ResultSet,其指向查询结果中的一行数据,供用户对查询结果进行遍历和访问。ResultSet对外API大家可以去官网了解

//谓词方式查询
        RdbPredicates rdbPredicates = new RdbPredicates("test")
        //获取年龄为28的数据
                .equalTo("age", 28)
                .orderByDesc("salary");
        //columns:规定查询返回的列。
        String[] columns = new String[]{"id","name","age","salary"};
        ResultSet resultSet = rdbStore.query(rdbPredicates, columns);

        for (int i=0;i<resultSet.getRowCount();i++){
            resultSet.goToRow(i);
            System.out.println("+++++++++id"+resultSet.getInt(resultSet.getColumnIndexForName("id")));
            System.out.println("+++++++++name"+resultSet.getString(resultSet.getColumnIndexForName("name")));
            System.out.println("+++++++++age"+resultSet.getInt(resultSet.getColumnIndexForName("age")));
            System.out.println("+++++++++salary"+resultSet.getDouble(resultSet.getColumnIndexForName("salary")));
        }

查询结果,因为我年龄设置的28,所以只有这一个人的数据,如果年龄一样的话就会 根据工资的大小类排列顺序

image


(2)原生sql

原生sql语句我们只需要改写几行代码就行了

//原生sql
        ResultSet resultSet = rdbStore.
                querySql("select id,name,age,salary from test where age=? order by salary desc", new String[]{"28"});
        for (int i=0;i<resultSet.getRowCount();i++){
            resultSet.goToRow(i);
            System.out.println("+++++++++id"+resultSet.getInt(resultSet.getColumnIndexForName("id")));
            System.out.println("+++++++++name"+resultSet.getString(resultSet.getColumnIndexForName("name")));
            System.out.println("+++++++++age"+resultSet.getInt(resultSet.getColumnIndexForName("age")));
            System.out.println("+++++++++salary"+resultSet.getDouble(resultSet.getColumnIndexForName("salary")));
        }

在这里我把第一个年龄也改为了28,然后他就根据工资排序了,可以看到是降序排列


image

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【数据库】C#创建项目简单开发实现数据库表记录迁移功能
在实际项目中,很大可能会遇到数据迁移的情况 特别是对于系统升级或者旧表转移到新表,新旧表很可能是字段都不一样的情况,本篇文章就是在两个不同数据库不同表之间数据整合 同时也回顾下ADO.NET的ORM框架基础知识
0 0
【鸿蒙】数据库--数据的更新
4.更新数据 调用更新接口,传入要更新的数据,并通过AbsRdbPredicates指定更新条件。该接口的返回值表示更新操作影响的行数。如果更新失败,则返回0。
0 0
【鸿蒙】数据库--数据的删除
删除 调用删除接口,通过AbsRdbPredicates指定删除条件。该接口的返回值表示删除的数据行数,可根据此值判断是否删除成功。如果删除失败,则返回0。
0 0
【鸿蒙】数据库--添加数据
2.添加数据 关系型数据库提供了插入数据的接口,通过ValuesBucket输入要存储的数据,通过返回值判断是否插入成功,插入成功时返回最新插入数据所在的行号,失败时则返回-1。
0 0
【鸿蒙】数据库--创建数据库
1.创建数据库 做小demo那我们可以用Storeconfig类。这个可以创建数据库名,其余的值设为默认。我给的名字是RdbStoreTest.db。 onstart方法内
0 0
数据库-MySQL-基础(4)-DQL(基础查询)
目录 DQL-介绍 DQL-语法 DQL- 基础查询 1、查询多个字段 2、设置别名 3、去出重复记录 DQL- 条件查询 1、语法 2、条件 3、案例集合
0 0
【数据库专题】实战演示造成数据库全表扫描的坑
【数据库专题】实战演示造成数据库全表扫描的坑
0 0
数据库教程:项目4 MySQL数据表的检索总结
MySQL数据库 “数据表的检索总结” 习题示例,包含源码,能建立起对于数据表的检索的基本概念
0 0
数据库 -- 索引并不是万能的
数据库 -- 索引并不是万能的
0 0
数据库语句高级应用之修改数据库兼容版本
数据库在项目开发中几乎是必不可少的元素,sql Server 相信大家都特别熟悉吧,那么是否遇到过这样一个问题呢: 在分析数据库或者部署数据库的时候,出现了数据库不兼容的问题。
771 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
阿里云数据库案例集下载
立即下载
阿里云数据库产品手册
立即下载
分析性数据库2.0深入技术解析
立即下载