Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在不影响其他列的情况下,将SQLite列更新为null_Android_Sqlite - Fatal编程技术网

Android 在不影响其他列的情况下,将SQLite列更新为null

Android 在不影响其他列的情况下,将SQLite列更新为null,android,sqlite,Android,Sqlite,我的android应用程序中有下表。我想删除设置为空的所有数量行。 我正在使用update语句来做这件事,但它会导致错误 这是我使用的update语句 getContentResolver().update(MenuEntry.CONTENT_URI, null, MenuEntry.COLUMN_ITEM_QTY+ "='" + null + "'", null); 我的提供者类更新方法 public int update(Uri uri, ContentVa

我的android应用程序中有下表。我想删除设置为空的所有数量行。

我正在使用update语句来做这件事,但它会导致错误

这是我使用的update语句

 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;
}
这是错误日志


有没有办法通过使用update或delete语句来完成此操作?

像往常一样使用ContentValue更新。为特定密钥传递null

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

为您的问题更新了带有特定答案的代码片段。感谢Aun提供您的答案。。我编辑代码并运行它..然后它显示以下错误并关闭11-05 11:24:31.307:E/AndroidRuntime8031:java.lang.RuntimeException:无法启动服务uk.co.bapos.android.kitchendisplay。StatusUpdateService@411a87c8有意{flg=0x4 cmp=com.resbook.resbookkitchenapp/uk.co.bapos.android.kitchendisplay.StatusUpdateService具有额外功能}:android.database.sqlite.sqliteconstraintextException:order_item.qty可能不为空代码19 11-05 11:24:31.307:E/androidRuntimean解决此问题的想法..我已将您的代码放入以尝试捕获。然后,应用程序运行,但未将qty列设置为空。表的架构定义order_item.qty不能为空。因此,它抛出SQLiteconstraintextexeption:order_item.qty不能为空如果确实需要,可以更改架构以允许此列为空值
    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
    ContentValues values = new ContentValues();
    values.putNull(MenuEntry.COLUMN_ITEM_QTY);
    int updatedRows = getContentResolver().update(MenuEntry.CONTENT_URI, values, null, null);