我有一个按钮,当用户点击它时会传递一些值,并且我用cv.put(“name”,name)添加这个值,我该如何避免添加重复项?
答案 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
中发生冲突时替换