JD.*_*JD. 20 sqlite android date sql-update
public Cursor set_datetime_next(Reminder r) {
String _newVal = "datetime('now', '+7 days')";
String[] args = { new Integer(r.getID()).toString() };
String query =
"UPDATE " + DBConst.TABLE
+ " SET " + DBConst.f_DATETIME_NEXT + "=" + _newVal
+ " WHERE " + DBConst.f_ID +"=?";
Log.i(TAG, query);
return db.rawQuery(query, args);
}
Run Code Online (Sandbox Code Playgroud)
我也试过传入datetime('now', '+7 days')作为绑定参数,这将无法工作,因为Android文档说:
这些值将绑定为字符串.
参考文献:
JD.*_*JD. 54
光标未关闭.
public void set_datetime_next(Reminder r, String _newVal) {
String[] args = { new Integer(r.getID()).toString() };
String query =
"UPDATE " + DBConst.TABLE
+ " SET " + DBConst.f_DATETIME_NEXT + "=" + _newVal
+ " WHERE " + DBConst.f_ID +"=?";
Log.i(TAG, query);
Cursor cu = db.rawQuery(query, args);
cu.moveToFirst();
cu.close();
}
Run Code Online (Sandbox Code Playgroud)
虽然这是有道理的,但让我感到困惑的是调用的要求moveToFirst()(或某些其他功能以某种方式"与光标一起工作").
如果没有呼叫既moveToFirst()和close(),该行从未更新. close()在它之后rawQuery(),什么也没做.
Jab*_*ari 20
因为它是一个UPDATE声明,你可以使用execSQL()而不是rawQuery().你不必费心游戏(这对于一个UPDATE声明来说有点愚蠢).
但是,您必须在WHERE语句中放置值而不是传递args,因为execSQL()只接受SQL语句的单个String参数.此外,execSQL()是void类型.
我execSQL()用于几乎所有的SQL语句,除了SELECT...
| 归档时间: |
|
| 查看次数: |
14091 次 |
| 最近记录: |