Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 检查内容提供商中的条件的正确方法是什么?_Android_Sqlite_Android Contentprovider - Fatal编程技术网

Android 检查内容提供商中的条件的正确方法是什么?

Android 检查内容提供商中的条件的正确方法是什么?,android,sqlite,android-contentprovider,Android,Sqlite,Android Contentprovider,我有sqlite数据库和包装它的内容提供商。有一张字典表和一张单词表。每个单词都属于一本字典。此外,每个字典都有恒定的容量。因此,我的内容提供商应该只允许在每个词典中插入有限数量的单词 "scheme" Dictionaries |-id (read-only) |-capacity Words |-id (read-only) |-dictionaryId (write-once) “方案” 辞典 |-id(只读) |-容量 话 |-id(只读) |-字典ID(写一次) 我有几个选择: 1

我有sqlite数据库和包装它的内容提供商。有一张字典表和一张单词表。每个单词都属于一本字典。此外,每个字典都有恒定的容量。因此,我的内容提供商应该只允许在每个词典中插入有限数量的单词

"scheme" Dictionaries |-id (read-only) |-capacity Words |-id (read-only) |-dictionaryId (write-once) “方案” 辞典 |-id(只读) |-容量 话 |-id(只读) |-字典ID(写一次) 我有几个选择:

1) 对于每一个新字典,我可以创建一个触发器,如果单词数量大于容量,它将引发()错误。但在某些情况下,它会对每个重复插入进行查询

2) 我可以在提供程序的insert()中检查此条件。(与上述问题相同)

3) 我可以将此检查传递给提供商的用户。例如,检查活动中向词典中添加新词的条件。这是最优化的方法,因为我不需要每次添加新单词时都进行查询。我可以在活动开始时查询字典中的单词数量,然后增加它,并且无需查询即可知道相关值。但这里我有另一个问题:如果我忘记检查这个条件,或者犯了错误,条件就不起作用了,该怎么办


那么,检查内容提供者中的条件的正确方法是什么呢?

我决定从数据库中提取处理数据的所有逻辑,并像使用容器一样使用数据库。原因是它使我从为数据库做测试中解脱出来,这在我看来并不容易。我认为更好的是考虑数据库是健壮的,并基于它为应用程序组件创建测试。