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

简介: 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等条件接口的使用。


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

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


RdbStore ResultSet querySql(String sql, String[] sqlArgs)


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



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

关系型数据库提供了查询返回的结果集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,所以只有这一个人的数据,如果年龄一样的话就会 根据工资的大小类排列顺序


(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,然后他就根据工资排序了,可以看到是降序排列


相关文章
|
6天前
|
数据采集 数据库 Python
有哪些方法可以验证用户输入数据的格式是否符合数据库的要求?
有哪些方法可以验证用户输入数据的格式是否符合数据库的要求?
112 75
|
16天前
|
UED
「Mac畅玩鸿蒙与硬件52」UI互动应用篇29 - 模拟火车票查询系统
本篇教程将实现一个模拟火车票查询系统,通过输入条件筛选车次信息,并展示动态筛选结果,学习事件处理、状态管理和界面展示的综合开发技巧。
54 13
|
2月前
|
存储 监控 数据处理
flink 向doris 数据库写入数据时出现背压如何排查?
本文介绍了如何确定和解决Flink任务向Doris数据库写入数据时遇到的背压问题。首先通过Flink Web UI和性能指标监控识别背压,然后从Doris数据库性能、网络连接稳定性、Flink任务数据处理逻辑及资源配置等方面排查原因,并通过分析相关日志进一步定位问题。
221 61
|
19天前
|
存储 前端开发 关系型数据库
鸿蒙开发:实现键值数据库存储
对于数据量比较的小的,我们直接选择轻量级的用户首选项方式即可,而对于数据量比较大的情况下,直接可以使用数据库,而对于相对来说,比较大的数据,我们就可以使用键值型数据库方式
|
19天前
|
SQL 存储 运维
从建模到运维:联犀如何完美融入时序数据库 TDengine 实现物联网数据流畅管理
本篇文章是“2024,我想和 TDengine 谈谈”征文活动的三等奖作品。文章从一个具体的业务场景出发,分析了企业在面对海量时序数据时的挑战,并提出了利用 TDengine 高效处理和存储数据的方法,帮助企业解决在数据采集、存储、分析等方面的痛点。通过这篇文章,作者不仅展示了自己对数据处理技术的理解,还进一步阐释了时序数据库在行业中的潜力与应用价值,为读者提供了很多实际的操作思路和技术选型的参考。
31 1
|
23天前
|
存储 Java easyexcel
招行面试:100万级别数据的Excel,如何秒级导入到数据库?
本文由40岁老架构师尼恩撰写,分享了应对招商银行Java后端面试绝命12题的经验。文章详细介绍了如何通过系统化准备,在面试中展示强大的技术实力。针对百万级数据的Excel导入难题,尼恩推荐使用阿里巴巴开源的EasyExcel框架,并结合高性能分片读取、Disruptor队列缓冲和高并发批量写入的架构方案,实现高效的数据处理。此外,文章还提供了完整的代码示例和配置说明,帮助读者快速掌握相关技能。建议读者参考《尼恩Java面试宝典PDF》进行系统化刷题,提升面试竞争力。关注公众号【技术自由圈】可获取更多技术资源和指导。
|
26天前
|
前端开发 JavaScript 数据库
获取数据库中字段的数据作为下拉框选项
获取数据库中字段的数据作为下拉框选项
54 5
|
1月前
|
存储 缓存 网络协议
数据库执行查询请求的过程?
客户端发起TCP连接请求,服务端通过连接器验证主机信息、用户名及密码,验证通过后创建专用进程处理交互。服务端进程缓存以减少创建和销毁线程的开销。后续步骤包括缓存查询(8.0版后移除)、语法解析、查询优化及存储引擎调用,最终返回查询结果。
32 6
|
2月前
|
关系型数据库 MySQL 数据库
GBase 数据库如何像MYSQL一样存放多行数据
GBase 数据库如何像MYSQL一样存放多行数据
|
1月前
|
SQL JavaScript 程序员
数据库LIKE查询屡试不爽?揭秘大多数人都忽视的秘密操作符!
本文分析了因数据库中的不可见空白字符导致的数据查询问题,探讨了问题的成因与特性,并提出了使用 SQL 语句修复问题的有效方案。同时,总结了避免类似问题的经验和注意事项。
38 0