避免重复,SQLITE,android

时间:2017-04-01 11:23:14

标签: java android sqlite android-sqlite

我有一个按钮,当用户点击它时会传递一些值,并且我用cv.put(“name”,name)添加这个值,我该如何避免添加重复项?

3 个答案:

答案 0 :(得分:1)

1-确保您的表中有一些适当的约束,例如PRIMARY KEY或UNIQUE。

2 - 插入时,通过ContentValues向此约束列添加值。如果插入新行会违反某些约束,则首先删除冲突的行,然后插入新行。

ContentValues Val = new ContentValues();
Val.put("IDD", id); 
Val.put("Category", cat);
long rows=db.insertWithOnConflict(TABLE_CATEGER, null,  Val,SQLiteDatabase.CONFLICT_REPLACE);
System.out.print(rows);
db.close(); 
Log.d(TAG,""+ rows);

Gordon Linoff的回答向您展示了如何制作一些UNIQUE

答案 1 :(得分:0)

我有一个表t,你不想要name的重复值,那么最好的方法是让数据库保持数据的完整性。

SQL仅为此目的提供了唯一的索引/约束。例如,您可以在数据上创建唯一索引:

create unique index unq_t_name on t(name);

任何尝试在name中创建重复的t值(无论是insert还是update)都会产生错误。

答案 2 :(得分:0)

最好在数据库结构中执行此操作 在你的

 SQLiteOpenHelper

 db.execSQL("CREATE TABLE "+MyDatabaseColums.USERINFOEntry.TABLE_NAME+" ("
                + MyDatabaseColums.USERINFOEntry.U_id+ " INTEGER , "
                + MyDatabaseColums.USERINFOEntry.mrname+ " TEXT, "
                + MyDatabaseColums.USERINFOEntry.meEmail+ " TEXT, "
"UNIQUE ( " +YOUR_id+") ON CONFLICT IGNORE"+");";

这会忽略你的字段中的任何冲突

或使用

 db.execSQL("CREATE TABLE "+MyDatabaseColums.USERINFOEntry.TABLE_NAME+" ("
                + MyDatabaseColums.USERINFOEntry.U_id+ " INTEGER , "
                + MyDatabaseColums.USERINFOEntry.mrname+ " TEXT, "
                + MyDatabaseColums.USERINFOEntry.meEmail+ " TEXT, "
"UNIQUE ( " +YOUR_id+") ON CONFLICT REPLACE"+");";

在Field

中发生冲突时替换