1
1
你可以用方法 insertWithOnConflict 具有 冲突忽略 标志,如果不想替换此行。如果没有相同的raw,则方法返回 - 1 ,所以你可以处理它 编辑: 首先,您需要创建唯一的行(在您的情况下-类id和学生id):
然后为方法的检查结果创建变量
尝试插入值并将结果放入 K
最后,检查变量(我是在asynctask中创建的,所以检查方法位于 OnPostExecute() 方法)
如果值一致,则不会更新数据库, K 得到 - 1 价值,所以,你可以烤面包或其他东西来处理它 编辑2: 关于contentvalue初始化: 首先,应该获取值,例如,从edittext获取值:
然后创建contentvalues变量并将值放入其中
|
2
1
当你使用一个包含所有信息的简单平面文件时,很容易使事情失去同步。也就是说,同一个学生id与多个名字关联,或者同一个类id与多个类名关联。如果需要更改学生名或类名,则需要额外的工作来保持同步。更不用说减少重复记录的必要性了。清理这些混乱的第一步是重新设计数据库。对于您在这里提到的数据,我将使用三个表:
将student和classes上的主键设置为id字段,将grades设置为(studentid,classid)的组合。这将防止一个给定的学生在同一个班级有多个年级,也将防止多个学生在同一个班级有相同的ID。 现在你的用户界面可以让用户选择一个学生,选择一个班级,然后分配一个分数。字母等级可以计算或键入。 下面是我将如何定义表:
外键约束防止为不存在的学生或班级输入成绩,也防止删除有成绩的学生或班级。如果学生或班级被删除,还有其他条款允许您删除该学生或班级的所有成绩。 学生与班级的关系被称为多对多关系。这意味着许多学生可以被分配到一个班级,许多班级可以被分配到一个学生。并不是只有学生和班级id是自动递增的键。成绩文件中的id引用了相关的学生和班级行。在上面的数据示例中, 亨利有两个等级(俄亥俄州历史(98)和美国历史(85)),莫莉只有一个等级(世界历史(85)),乔治有两个等级(美国历史(77)和世界历史(92))。 您可以创建一个单一视图,将学生的课程和成绩组合在一起,如下所示:
|
baronsec · SQL遍历表以查找子字符串 2 年前 |
Guillaume · 使用操作从Python列表创建numpy数组 2 年前 |
EJ Travel · 如何使用Kotlin中的Room管理登录验证? 2 年前 |
Ken · SQL计数或最大值(sqlite) 2 年前 |
Eric · Python Crontab无法读取Sqlite3表 2 年前 |