我正在努力为下一个情况找到最有效的逻辑。
我想在我的Android应用程序上实现,用于存储用户最常用的函数/操作。
dbase结构:
| _id | act_name(文本唯一)|计数器(整数)|
代码:(src https://stackoverflow.com/a/20568176/8006698)
int rowID = (int) db.insertWithOnConflict(TABLE_NAME, null, cv,SQLiteDatabase.CONFLICT_IGNORE);
if (rowID != -1){
myLog("Written to base with id = " + rowID);
} else {
db.execSQL("UPDATE stats SET counter=counter + 1 WHERE act_name = '" + mAction+"'");
myLog("stats updated");
}
我很惊讶,那个' execSQL'没有返回值作为更新'方法。 我会用:
int rowID = db.update(...);
if (rowID == 0) {
//if not updated then insert
long insertedID = db.insert(...);
myLog("Inserted to base ");
} else
myLog("base updated");
但此处不能增加直接算作' counter = counter + 1'所以我要使用' insertWithOnConflict'。 我不确定,使用它是不错的做法。等待你的想法。
答案 0 :(得分:0)
替换此
this.props.navigator.resetTo
使用此
db.execSQL("UPDATE stats SET counter=counter + 1 WHERE act_name = '" + mAction+"'");
你得到更新计数并做任何你想做的事。