【发布时间】:2017-12-29 03:44:09
【问题描述】:
我正在尝试为下一种情况找到最有效的逻辑。
我想在我的 Android 应用上实现以 sql 存储用户最常用的功能/操作。
数据库结构:
| _id | act_name(文本唯一)|计数器(整数)|
代码:(srchttps://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' 不会以'update' 方法返回值。 我会使用:
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'。 我不确定,使用它是否是一种好习惯。等待你的想法。
【问题讨论】:
-
所以你要问的只是一种用 'counter += 1' 更新 sql 的方法?