Android SQL更新表

Android SQL更新表,android,sql,Android,Sql,我正在升级数据库以添加另一列。我试图做的是(在onUpgrade中添加列之后)从每个表的主活动调用此方法(3个表已升级)。该方法应将新列中的所有空格替换为“1” 代码运行良好,每次都是单步执行布尔测试,但是当我打开表查看数据时,整个列都是空白的。奇怪的是,我的rowId号码每次都在增加。它从rowid分别为1、2、3的3行开始。在我的代码运行一次之后,它们现在的rowid分别为4、5、6 有人能帮我吗?KEY_ROWID只是我的自动ROWID号码。键模式只是列标题的“模式”。如果我对它进行调试,

我正在升级数据库以添加另一列。我试图做的是(在onUpgrade中添加列之后)从每个表的主活动调用此方法(3个表已升级)。该方法应将新列中的所有空格替换为“1”

代码运行良好,每次都是单步执行布尔测试,但是当我打开表查看数据时,整个列都是空白的。奇怪的是,我的rowId号码每次都在增加。它从rowid分别为1、2、3的3行开始。在我的代码运行一次之后,它们现在的rowid分别为4、5、6

有人能帮我吗?KEY_ROWID只是我的自动ROWID号码。键模式只是列标题的“模式”。如果我对它进行调试,代码中将显示我的三行(它在while循环中运行了3次)


与其手动循环行,不如利用SQL的强大功能,在一次调用中更新所有行?例如

mDb.execSQL("UPDATE " + table + " SET " + KEY_MODE + " = 1;");

由于它非常简单,您可以在您的
onUpgrade()
方法中正确地执行此操作。

您可以更轻松地执行此操作:

1.)在onUpgrade()期间:“添加列newcolumn default 1”。这将添加一个新列,其中所有新列都包含1

2.)onUpgrade()已运行:update table set newcolumn=1:如果没有WHERE子句,整个表都会受到影响

没有必要穿过所有的行

您要执行的操作需要选择…进行更新/更新…其中当前的。我没有在SQLite中这样做,所以我不知道这是否受支持


在您的情况下(onUpgrade已经运行)使用2。)

不知道存在此问题,谢谢。对于三个表中的两个,它可以正常工作……由于某种原因,最后一个表仍然是空的……主键是递增的,就像我上面的问题一样……奇怪
mDb.execSQL("UPDATE " + table + " SET " + KEY_MODE + " = 1;");