仅当值不是null时才更新sqlite数据库

时间:2016-05-31 08:59:19

标签: android sqlite

我有一项更新人员信息的活动

我想知道是否有一种方法只更新非空值,其余的你保持不变这里是我的更新功能

  public boolean modifierMember (String nom ,String prenom ,String tel,String profile ,String etat,int id ){
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues contentValues = new ContentValues();
    contentValues.put(COL_2,nom);
    contentValues.put(COL_3,prenom);
    contentValues.put(COL_4,tel);
    contentValues.put(COL_5,profile);

    contentValues.put(COL_k, etat);

    db.update(TABLE_Membre,contentValues,"IDM=?",new String[]{Integer.toString(id)});
    return true;

}

2 个答案:

答案 0 :(得分:2)

是的,你可以这样做,一种方法是检查值是 null 还是特定column的值,在你的情况下它可以像:< / p>

if(nom != null) {
    contentValues.put(COL_2,nom);
}
// Same for other fields.

在上面你可以类似地检查其他值,如果它们不为空那么只添加到contentValues

修改

它还取决于你的modifierMember()函数作为参数传递的内容

例如,如果您传递'null',那么您需要按照我上面的说法进行比较,如果您通过"",那么您必须相应地进行比较,这完全取决于您作为参数传递的内容

答案 1 :(得分:1)

根据您的要求检查以下更新方法,

      public boolean modifierMember (String nom ,String prenom ,String tel,String profile ,String etat,int id ){
           SQLiteDatabase db = this.getWritableDatabase();
           ContentValues contentValues = new ContentValues();

           if(nom != null)
                  contentValues.put(COL_2,nom);

           if(prenom != null)    
                  contentValues.put(COL_3,prenom);

           if(tel != null)
                   contentValues.put(COL_4,tel);

           if(profile != null)
                   contentValues.put(COL_5,profile);

           if(etat != null)
                    contentValues.put(COL_k, etat);

           db.update(TABLE_Membre,contentValues,"IDM=?",new String[]{Integer.toString(id)});
          return true;

      }