任何人都可以指导我。 我有一个Android应用程序。这需要每日用户输入的值。我希望在同一天的同一天,用户可以在数据库中输入n重新输入值,打开或关闭应用程序,但是值只是得到更新,直到今天22/10/2014的相同日期。
现在我已经在我的sqlite数据库中插入了日期值。但是,如果我只是按用户输入的值更新它,那么只创建一行即可更新,即使日期在第二天更改。
但是如果我再次插入日期,则会创建我想要的下一行。 我的问题是:现在如何在最近的日期更新我的sqlite数据库。 我从复选框更新用户值是通过此方法。
public long send(boolean a) {
ContentValues cv = new ContentValues();
cv.put(SEND_Today, a);
return ourDatabase.update(MY_DAILYTABLE, cv, DATE + "=" + "date", null);
它会更新所有行,因为每行包含日期列。 我想要这样的事情
ourDatabase.update(My_DAILYTABLE , cv , "(select MAX(date) from My_DAILYTABLE )" , null;
update dailydata set daily = 10 where date = (select max(date) from dailydata) // because I know sqlite run this query successfuly
但无论我写什么查询,我都会收到错误。 任何人都可以指导我一个正确的查询来实现这个功能。只需要知道Android SQLite中的写更新查询。
答案 0 :(得分:0)
您必须提供整个WHERE子句,即date =
:
ourDatabase.update(My_DAILYTABLE, cv, DATE+" = (select...)", null);
答案 1 :(得分:0)
您可以按照以下步骤操作:
db.update(DB_TABLE, contentValues, DB_TABLE_ROW_NAME + " = ? ", new String[] { WHERE_DB_TABLE_ROW_VALUE });
<强>应:强>
ourDatabase.update(MY_DAILYTABLE, cv, DATE + " =? " , new String[] { yourMaxDate });
或使用rawQuery:
String sql = "update dailydata set daily = 10 where date = (select max(date) from dailydata)";
Cursor cursor = db.rawQuery(sql, null);
if (cursor2.moveToFirst()) {
// can get column value as select query
}