Android sql更新或插入

时间:2017-07-23 13:28:34

标签: android sql insert

我正在努力为下一个情况找到最有效的逻辑。

我想在我的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'。 我不确定,使用它是不错的做法。等待你的想法。

1 个答案:

答案 0 :(得分:0)

替换此

this.props.navigator.resetTo

使用此

 db.execSQL("UPDATE stats SET counter=counter + 1 WHERE act_name = '" + mAction+"'");

你得到更新计数并做任何你想做的事。