Android 如何使用特定行更新sqlite表,而不重复现有行?
我有一些桌子,里面有一个学生。 该表由以下列组成:Android 如何使用特定行更新sqlite表,而不重复现有行?,android,database,sqlite,Android,Database,Sqlite,我有一些桌子,里面有一个学生。 该表由以下列组成: "CREATE TABLE IF NOT EXISTS " + STUDENTS_TABLE + "(" + STUDENT_ID + " INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, " + STUDENT_NAME + " TEXT NOT NULL, "
"CREATE TABLE IF NOT EXISTS " + STUDENTS_TABLE
+ "(" + STUDENT_ID + " INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "
+ STUDENT_NAME + " TEXT NOT NULL, "
+ GROUP + " TEXT NOT NULL);";
我需要更新表,以防用户想要添加新学生。
因此,如果用户添加新的学生-我将该学生添加到代码映射中,然后用我在映射中持有的所有现有学生更新数据库
在这种情况下,我有两个学生。。具有不同的id,但具有相同的名称和组
我不想删除表,然后添加每个学生
我在找别的办法
有人能帮我吗
我只想更新不在数据库中的学生 您可以向Create Table语句添加唯一约束:
"CREATE TABLE IF NOT EXISTS " + STUDENTS_TABLE
+ "(" + STUDENT_ID + " INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "
+ STUDENT_NAME + " TEXT NOT NULL, "
+ GROUP + " TEXT NOT NULL, "
+ CONSTRAINT name_unique UNIQUE (STUDENT_NAME, GROUP));";
现在,您将无法插入具有相同学名和组的条目。当然,您可能必须处理错误
或者,您可以这样做:
INSERT INTO STUDENTS_TABLE(Field1,Field2, ...)
SELECT value1, value2, ...
WHERE NOT EXISTS(SELECT STUDENT_NAME FROM STUDENTS_TABLE WHERE STUDENT_NAME = valueName AND GROUP = valueGroup);
“…”是为了防止您需要在更多字段中添加更多值。在表中添加唯一约束(约束为“名称”和“组”)是否不符合您的要求?如果我知道如何做。。所以也许:-)