在android中更新SQLite表的问题

时间:2012-03-01 12:50:10

标签: android sqlite

我想在SQLite Android

中交换特定列的两行值
public void updatePosition(int oldVal, int newVal){
    ContentValues updatedValue1 = new ContentValues();
    updatedValue1.putNull(ColName);
    db.update(TABLE_NAME, updatedValue1, ColName + "==" + newVal, null);
    ContentValues updatedValue2 = new ContentValues();
    updatedValue2.put(ColName, newVal);
    db.update(TABLE_NAME, updatedValue2, ColName + "==" + oldVal, null);
    ContentValues updatedValue3 = new ContentValues();
    updatedValue3.put(colName, oldVal);
    db.update(TABLE_NAME, updatedValue2, colName + " IS NULL", null);
}

如果我们假设oldVal = 10且newVal = 20,那么它应该像这样

1st update : put null where value is 20 -- Now colName has 10 and null
2nd update : put 20 where value is 10   -- Now colName has 20 and null
3rd update : put 10 where value is null -- now colName has 20 and 10

所以最终答案应该是20和10,但它显示20和20。

请帮我解决逻辑失败的问题?

谢谢...

1 个答案:

答案 0 :(得分:1)

上次更新真是个愚蠢的错误。而不是这个

updatedValue3.put(colName, oldVal);
db.update(TABLE_NAME, updatedValue2, colName + " IS NULL", null);

我应该写这个

updatedValue3.put(colName, oldVal);
db.update(TABLE_NAME, updatedValue3, colName + " IS NULL", null);

感谢上帝......