首页 > 解决方案 > Android:通过 SQL 或 Java 验证数据库数据?

问题描述

TL; 博士

是否有任何众所周知的模式/策略可用于基于 Android 应用程序中数据库表中的数据进行数据验证?


考虑一个具有以下列的 SQLite 数据库表:

  1. 开始日期
  2. 开始时间
  3. 结束日期
  4. 时间结束

如果要插入的记录的 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 不应允许插入。

考虑到上面的示例,我可以通过两种方式执行此验证:

  1. 制定一个自给自足的 SQL 查询,它将检查要插入的新记录的日期时间范围是否在现有记录的日期时间范围内。如果存在这样的记录,则不允许插入新记录
  2. 查询表中的所有记录,在代码中逐一遍历它们Java(通过 a Cursor),如果任何行落在日期范围内,则不允许插入。

Cursor鉴于应用程序的用例是这样的事实,即所讨论的表很可能不会超过 20-30 条记录,相比之下,获取所有行并使用in遍历它们Java并不会真正昂贵运行 SQL 查询。另一方面,对 20-30 条记录的复杂数据库查询可能会导致更多的 I/O。

在将数据插入数据库之前,我想到了上述两种方法来验证数据。我假设来自数据库表的数据验证是 Android 应用程序中的常见用例。

是否有任何众所周知的模式/策略可用于基于 Android 应用程序中数据库表中的数据进行数据验证?

标签: javaandroidsqlsqlitevalidation

解决方案


推荐阅读