2016-05-31 126 views
0
@Override 
    public int delete(Uri uri, String selection, String[] selectionArgs) { 
     final SQLiteDatabase db = mOpenHelper.getWritableDatabase(); 
     final int match = sUriMatcher.match(uri); 
     int rowsDeleted; 
     // this makes delete all rows return the number of rows deleted 
     if (null == selection) selection = "1"; 
     switch (match) { 
      case WEATHER: 
       rowsDeleted = db.delete(
         WeatherContract.WeatherEntry.TABLE_NAME, selection, selectionArgs); 
       break; 
      case LOCATION: 
       rowsDeleted = db.delete(
         WeatherContract.LocationEntry.TABLE_NAME, selection, selectionArgs); 
       break; 
      default: 
       throw new UnsupportedOperationException("Unknown uri: " + uri); 
     } 
     // Because a null deletes all rows 
     if (rowsDeleted != 0) { 
      getContext().getContentResolver().notifyChange(uri, null); 
     } 
     return rowsDeleted; 
    } 

在上面的代码,我们为什么要选择参数设置为1的Android的ContentProvider的选择参数,如果它为null,以品牌删除所有行返回删除的行数?删除方法等于1

如果我们将选择设置为另一个数字或仅保留它为空,会发生什么情况?

问候

回答

1

传递1作为选择参数将删除所有行并返回删除的行数,而如果选择条款是空它仍然会删除所有的行,但结果返回0。

当您通过任何其他数字超过1或0时会发生什么情况没有记录。您可以尝试传递这些数字并记录结果以检查发生了什么。

检查文档here

+1

谢谢,我现在明白了 – McVaLs21