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);

“…”是为了防止您需要在更多字段中添加更多值。

在表中添加唯一约束(约束为“名称”和“组”)是否不符合您的要求?如果我知道如何做。。所以也许:-)