如何防止Android sqlite数据库中的重复数据?

时间:2018-07-21 06:30:12

标签: android android-sqlite

我在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中的

是重复数据

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;