我在android的sqlite数据库上工作,我想插入如下表
id procode proname user
1 pro123 mobile 120
2 pro123 mobile 121
3 pro345 watches 120
在上表中,只有id是uniq,所有值都不是uniq,但是我不想为同一用户允许相同的数据,这意味着另一个用户将插入相同的数据 现在我不想在检查procode和用户数据时插入重复项 就像bwlow一样
id procode proname user
1 pro123 mobile 120
2 pro123 mobile 121
3 pro123 mobile 120
上表3中的是重复数据
答案 0 :(得分:0)
创建表时,您需要创建一个唯一键
CREATE TABLE name (<your column definitions>, UNIQUE (procode, proname, user) ON CONFLICT REPLACE);
要处理在冲突中发生的情况,请参见https://sqlite.org/lang_conflict.html
答案 1 :(得分:0)
当您插入新行时,您将拥有新的用户。
因此,在将数据插入数据库之前。
检查是否已经存在相同的USER数据。
下面是相同的SQLITE查询提示
Cursor c=db.rawQuery("SELECT * FROM user WHERE user="YOUR_VALUE", null);
if(c.moveToFirst())
{
showMessage("Error", "Record exist");
}
else
{
// Inserting record
}
答案 2 :(得分:0)
在反复试验的过程中,我找到了最佳解决方案 在主要活动中
int count = 0;
while(db.findTask(results.toUpperCase()).moveToNext()){
count++;
break;
}
if(count!=0){
Snackbar.make(v, "Name Already Taken", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
return;
}
在数据库中
public Cursor findTask(String taskName){
SQLiteDatabase db = this.getWritableDatabase();
String query = "SELECT "+ID+ " FROM "+TABLE_NAME+" WHERE "+
TASK_NAME + " = '"+taskName+"'";
Cursor data = db.rawQuery(query,null);
return data;