android - 将 SQLite 列更新为 null 而不影响其他列

标签 android sqlite

我的 Android 应用程序中有下表。我想删除(设置为空)所有数量行。 enter image description here

我使用更新语句来执行此操作。但它会生成错误

这是我使用的更新语句

 getContentResolver().update(MenuEntry.CONTENT_URI, null,
             MenuEntry.COLUMN_ITEM_QTY+ "='" + null + "'", null);

我的提供者类更新方法

 public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {

     final SQLiteDatabase db = mOpenHelper.getWritableDatabase();
     final int match = sUriMatcher.match(uri);
     int rowsUpdated;


     switch (match) {
         case MENU:
             rowsUpdated = db.update(OrderContract.MenuEntry.TABLE_NAME, values, selection,
                     selectionArgs);
        if (rowsUpdated != 0) {
            getContext().getContentResolver().notifyChange(uri, null);
        }
             break;
         case MENU_ID:
             rowsUpdated = db.update(OrderContract.MenuEntry.TABLE_NAME, values, selection,
                     selectionArgs);
             break;   
         case ORDER:
             rowsUpdated = db.update(OrderContract.OrderEntry.TABLE_NAME, values, selection,
                     selectionArgs);

           if (rowsUpdated != 0) {
           getContext().getContentResolver().notifyChange(uri, null);
       }
             break;
         case ORDER_ID:
             rowsUpdated = db.update(OrderContract.OrderEntry.TABLE_NAME, values, selection,
                     selectionArgs);
             break;     
         default:
             throw new UnsupportedOperationException("Unknown uri: " + uri);
     }

     return rowsUpdated;
}

这是错误日志

  11-05 11:01:14.241: E/AndroidRuntime(7212): java.lang.RuntimeException: Unable to start service nk.co.toks.android.kdisplay.StatusUpdateService@413c4c30 with Intent 
    { cmp=com.resbook.ressdapp/nk.co.toks.android.kdisplay.StatusUpdateService (has extras) }:
     java.lang.IllegalArgumentException: Empty values
    11-05 11:01:14.241: E/AndroidRuntime(7212): Caused by: java.lang.IllegalArgumentException: Empty values
    11-05 11:01:14.241: E/AndroidRuntime(7212):     at android.database.sqlite.SQLiteDatabase.updateWithOnConflict(SQLiteDatabase.java:1531)
    11-05 11:01:14.241: E/AndroidRuntime(7212):     at android.database.sqlite.SQLiteDatabase.update(SQLiteDatabase.java:1514)
    11-05 11:01:14.241: E/AndroidRuntime(7212):     at android.content.ContentProvider$Transport.update(ContentProvider.java:235)
    11-05 11:01:14.241: E/AndroidRuntime(7212):     at android.content.ContentResolver.update(ContentResolver.java:1020)

    11-05 11:01:14.241: E/AndroidRuntime(7212):     at android.app.Service.onStartCommand(Service.java:450)
    11-05 11:01:14.241: E/AndroidRuntime(7212):     at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2850)
    11-05 11:01:14.241: E/AndroidRuntime(7212):     ... 10 more

有什么方法可以通过使用更新或删除语句来完成此操作吗?

最佳答案

照常更新内容值。为特定键传递 null

    ContentValues values = new ContentValues();
    values.putNull(MenuEntry.COLUMN_ITEM_QTY);
    int updatedRows = getContentResolver().update(MenuEntry.CONTENT_URI, values, null, null);

关于android - 将 SQLite 列更新为 null 而不影响其他列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26750412/

相关文章:

android - 约束布局隐藏带有链权重的 View

android - 为什么layout和layout-normal-mdpi的存在不会产生编译时错误?

sql-server - SQL Server CE 4.0 性能对比

sqlite - 无法链接到 libsqlite3.a 以创建我自己的静态库

Android:图片库分享到应用程序

android - recyclerview 中的 Seekbar 也会移动 recyclerview

r - 如何从具有不同维度的两个数据框中提取特定行并生成多个 .csv 文件?

android - Sqlite 和查询

sql - 基于 SQLite 中的单行切换一系列行的位

java - 按类列的值按升序对 Parse 集合进行排序