仅当sqlite数据库中不存在该值时才插入,否则覆盖

时间:2014-10-11 10:35:36

标签: android sqlite

我创建了sqlite数据库,我想要做的是当用户输入值然后我想检查该值是否已经存在,如果值已经存在,那么UPDATE否则INSERT该值,我试过的是... < / p>

public long insertDataCat(String id,String cat)
{
 try {
            SQLiteDatabase db;
            db = this.getWritableDatabase(); // Write Data


           ContentValues Val = new ContentValues();
           Val.put("IDD", id);
           Val.put("Categoryy", cat);

            long rows = db.insert(TABLE_CATEGARY_MASTER, null, Val);

            db.close();
            return rows; // return rows inserted.

         } catch (Exception e) {
            return -1;
         }

 }

1 个答案:

答案 0 :(得分:2)

首先你得到表的游标数,如果在表中找到任何记录意味着它返回游标计数1,否则返回零。如果游标计数1表示你执行UPDATE操作,否则执行插入操作。

 public long insertDataCat(String id,String cat)
    {
     try {
                SQLiteDatabase db;
                db = this.getWritableDatabase(); // Write Data


               ContentValues Val = new ContentValues();
               Val.put("IDD", id);
               Val.put("Categoryy", cat);
               String selectQuery = "select * from TABLE_CATEGARY_MASTER";
               Cursor cursor = db.rawQuery(selectQuery, null);`
              if(cursor.getCount()==1)
              {
                //execute update query here
             long updaterow=db.update(TABLE_CATEGARY_MASTER,val);
                return updaterow; // return rows inserted.
              }
              else
              {
                 //Perform the insert query
                 long rows = db.insert(TABLE_CATEGARY_MASTER, null, Val);
                 return rows; // return rows inserted.
              }

                db.close();


             } catch (Exception e) {
                return -1;
             }

 }