【问题标题】:How to prevent duplicate data in android sqlite database?如何防止android sqlite数据库中的重复数据?
【发布时间】:2018-12-29 09:51:50
【问题描述】:

我正在使用 android 中的 sqlite 数据库我想插入如下表

                    id procode  proname user
                    1  pro123   mobile   120
                    2  pro123   mobile   121
                    3  pro345   watches  120

在上表中,只有 id 是 uniq,所有值都不是 uniq,但我不想为同一个用户允许相同的数据,这意味着另一个用户将插入相同的数据 现在我不想在检查 procode 和 user 的数据时插入重复项 像bwlow的意思

                    id procode  proname user
                    1  pro123   mobile   120
                    2  pro123   mobile   121
                    3  pro123    mobile   120 

上表3为重复数据

【问题讨论】:

  • 将 procode 作为主键。
  • 您可以在stackoverflow.com/questions/734689/… 中查看数据库中的多个主键
  • 代码可以供其他用户使用
  • 我更新了我的曲请检查
  • 在插入新行之前,执行查询以检查该数据是否已存在

标签: android android-sqlite


【解决方案1】:

当您插入新行时,您就有了新的用户。

所以在将数据插入数据库之前。

检查是否已经存在相同的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】:

    创建表时需要创建唯一键

    CREATE TABLE name (<your column definitions>, UNIQUE (procode, proname, user) ON CONFLICT REPLACE);
    

    要处理发生冲突的情况,请参阅https://sqlite.org/lang_conflict.html

    【讨论】:

      【解决方案3】:

      我在反复试验的过程中找到了最好的解决方案 在主要活动中

       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;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-01-21
        • 2016-07-23
        • 2022-08-19
        • 1970-01-01
        • 1970-01-01
        • 2015-06-02
        • 2012-12-04
        • 1970-01-01
        相关资源
        最近更新 更多