java - Android:通过 SQL 或 Java 验证数据库数据?
问题描述
TL; 博士
是否有任何众所周知的模式/策略可用于基于 Android 应用程序中数据库表中的数据进行数据验证?
考虑一个具有以下列的 SQLite 数据库表:
- 开始日期
- 开始时间
- 结束日期
- 时间结束
如果要插入的记录的 start_date、start_time 或 end_date、end_time 在现有记录的范围内,我需要确保一条记录不能插入到上表中。
例子 :
现有记录
start_date end_date start_time end_time
2019-02-11 2019-02-15 22:00 23:30
要插入的新记录
start_date end_date start_time end_time
2019-02-12 2019-02-13 22:00 23:30
由于上述记录位于现有记录的日期和时间范围之间,因此 UI 不应允许插入。
考虑到上面的示例,我可以通过两种方式执行此验证:
- 制定一个自给自足的 SQL 查询,它将检查要插入的新记录的日期时间范围是否在现有记录的日期时间范围内。如果存在这样的记录,则不允许插入新记录或
- 查询表中的所有记录,在代码中逐一遍历它们
Java
(通过 aCursor
),如果任何行落在日期范围内,则不允许插入。
Cursor
鉴于应用程序的用例是这样的事实,即所讨论的表很可能不会超过 20-30 条记录,相比之下,获取所有行并使用in遍历它们Java
并不会真正昂贵运行 SQL 查询。另一方面,对 20-30 条记录的复杂数据库查询可能会导致更多的 I/O。
在将数据插入数据库之前,我想到了上述两种方法来验证数据。我假设来自数据库表的数据验证是 Android 应用程序中的常见用例。
是否有任何众所周知的模式/策略可用于基于 Android 应用程序中数据库表中的数据进行数据验证?
解决方案
推荐阅读
- python - 在 Python 中使用 Paramiko 从 top 命令收集输出
- jmeter - Jmeter 采样器 'v1/pages/...' 产生 'java.lang.OutOfMemoryError: Java heap space' 错误
- azure-active-directory - AD 身份验证 - 如何在 MVC dot net 4.6.2 版中刷新令牌
- javascript - 如何在 NodeJs 中创建动态对象名称
- javascript - 根据条件选择和显示值
- vuejs2 - 如何在nuxt的自定义文件夹中使用axios
- powershell - Powershell 命令打开 WSL 会话,连接到远程机器然后调用该机器上的脚本
- python - 进程完成,退出代码 -1073740791 (0xC0000409) 错误未打开网站
- sequence - 如何找到序列的最大值(尤其是hana序列)
- php - Lumen Jwt 身份验证获取(参数 2 传递给 Tymon\JWTAuth\JWTGuard)错误