我正在尝试更新数据库以显示已上传的内容。在我上传信息的方法结束时,我有以下代码将列值从0更改为1,其中1表示已上传某些内容但我收到错误。
以下是我的代码:
ContentValues cv = new ContentValues();
cv.put(ProviderMetaData.TableMetaData.HAS_UPLOADED, "1");
String where = ProviderMetaData.TableMetaData._ID + "=" + contenturi;
String[] value = {"0"};
ContentResolver cr = this.mContext.getContentResolver();
cr.update(ProviderMetaData.TableMetaData.CONTENT_URI, cv, where, value);
我收到的错误消息如下:
Error upldating hasupladed=1 using UPDATE tablename SET hasuploaded=? WHERE _id=1
有没有人在这里看到错误或知道我做错了什么?
答案 0 :(得分:2)
我不确定变量contenturi
的值是多少,但你不需要它。如果我没错,你需要的正确代码是:
ContentValues cv = new ContentValues();
cv.put(ProviderMetaData.TableMetaData.HAS_UPLOADED, "1");
String where = ProviderMetaData.TableMetaData._ID + "= ?";
String[] value = {"0"};
ContentResolver cr = this.mContext.getContentResolver();
cr.update(ProviderMetaData.TableMetaData.CONTENT_URI, cv, where, value);
甚至:
ContentValues cv = new ContentValues();
cv.put(ProviderMetaData.TableMetaData.HAS_UPLOADED, "1");
String where = ProviderMetaData.TableMetaData._ID + "= ?";
String[] value = {String.valueOf(contenturi)};
ContentResolver cr = this.mContext.getContentResolver();
cr.update(ProviderMetaData.TableMetaData.CONTENT_URI, cv, where, value);
取决于您是否要动态设置ID。
我的代码和你的代码之间的主要区别在于我使用where参数,因为它们是用来表示 - 在caluse中你将问号放在要插入其值的位置然后Android {{1相应地替换它们的值。