Android数据库错误由于某种原因无法更新表中的单元格?

时间:2012-03-28 15:31:45

标签: android sql

我正在尝试更新数据库以显示已上传的内容。在我上传信息的方法结束时,我有以下代码将列值从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

有没有人在这里看到错误或知道我做错了什么?

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相应地替换它们的值。