【问题标题】:Android SQLite "random" rows seem inaccessibleAndroid SQLite“随机”行似乎无法访问
【发布时间】:2013-06-06 06:46:37
【问题描述】:

我有一个包含 4 列的数据库。除了随机行仍然无法访问之外,一切正常。我似乎无法更新或删除它们。我使用了正确的代码:

删除代码:

boolean deleted=db.delete(TABLE_NAME, KEY_BLAH + "=" + alarm, null) > 0;

更新代码:

db.update(TABLE_NAME, args, KEY_BLAH + "=" + blah, null)

对于某些行,删除代码返回false,更新代码返回0,这是任意的。这些行被实现为ListView。对ListView 元素的任何更改都应反映在SQLite Database 中。大多数情况下,代码都有效。不过,它似乎不适用于随机点的随机行。我认为这与 SDK 无关。我已经在ICSGBJB 上尝试过。

我也试过deleting 行和inserting 它。显然这不起作用,因为我的delete 语句似乎不起作用。这样做的逻辑是,如果update 不可能,那么delete 行和insert 行将具有相同的行ID 和不同的数据。因此,deleted 变量是未执行的if-block 的条件。

编辑

例子:

1 1414 000 off

当我点击列表项中的几个按钮时。

应该变成

1 1414 064 off

现在,除了我之前所说的一些随机行之外,这在大多数情况下都有效。

【问题讨论】:

  • 请显示一行中的值的示例,以及您认为应该匹配的alarm 值。
  • @CL。编辑了问题。
  • blah 列是什么?您要匹配的 blah 值是什么?
  • blah 是第二列。 1414。显然,它因行而异。
  • 你如何将这个值写入表中?

标签: android sqlite android-sqlite delete-row


【解决方案1】:

如果您(间接)执行如下 SQL 语句:

UPDATE MyTable SET x = '064' WHERE blah = 1414

然后将blah 列中的值与数字 1414 进行比较。

在 SQL 语句中使用字符串时,应始终使用参数来避免这样的格式问题(和SQL injection attacks):

db.update(TABLE_NAME, args, KEY_BLAH + "= ?", new String[] { blah })

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-03
    • 1970-01-01
    • 2020-12-11
    • 1970-01-01
    • 2021-03-13
    • 1970-01-01
    • 2012-08-29
    • 2011-12-20
    相关资源
    最近更新 更多