2011-04-17 77 views
0

在我们放在一起,我想更新来自不同的活动行,但它抛出一个错误或者不更新任何东西,因为我似乎无法得到当前ROWID一次我从一个活动移动应用到下一个。任何想法都会很棒。Android的更新行的问题

这个来自活动:

Cursor value; 

db.open(); 
long rowId = value.getLong(value.getColumnIndex("_id")); 
boolean id = db.updateA(rowId, a1, a2, a3, a4); 
db.close(); 

如果我设置了“ROWID = 1”会更新该行得很好,但我想这只是在不同的活动创建的行。

这是DBHelper文件:

public boolean updateA(long rowId, String a1,String a2, String a3, String a4) { 
ContentValues args = new ContentValues(); 

args.put(C_A1, a1); 
args.put(KEY_A2, a2); 
args.put(KEY_A3, a3); 
args.put(KEY_A4, a4); 
return db.update(TABLE, args, KEY_ROWID + "=" + rowId, null) > 0; 
} 

回答

0

如果需要更新的记录,我建议存储在创建该记录在存储器中的数据对象和传递,为需要做其他活动更新。数据对象应该有一个属性来存储自己的ID,所以你可以使用它。

不必你需要更新将是一个灾难的记录的引用。另外,如果你知道你总是需要更新记录,为什么不直接插入呢?

+0

谢谢都为你输入。 – xappz 2011-04-21 00:20:05

+0

@ user712343 - 没问题。如果您找到了有助于您的答案,那么您应该接受该答案,以便其他搜索相同问题的用户可以快速查看有用的答案。您也可以通过点击每篇文章左侧的向上箭头来获得答案。享受堆栈溢出! – skaz 2011-04-21 11:48:21

+0

我所做的就是把所有东西都放在一张桌子上,它解决了我在做的事情。 – xappz 2011-04-26 20:34:17

0

我不明白这一点。

您有一个活性的那一个opena DB,更新行并关闭数据库。这是在SQLiteOpenHelper类的帮助下完成的。

现在你移动到活动B和现在该怎么办?将你的主键(你知道它,你用它A)和putExtra发布到B(或者把整行放到B中)。如果将rowid放到B中,可以打开,重新读取该行,如果需要则更新并再次关闭。如果你只把整行放到B上,那么这就是你需要做的 - 但我不喜欢那样(例如,如果B崩溃会发生什么?)。

如果您在两项活动中都更新了这两项活动,但没有了解这两项活动做了什么(并且没有重新阅读这些行),那么纯粹运气会带来什么结果。

0

试试这个:

return db.update(TABLE, args, KEY_ROWID + "='" + rowId + "'", null)