我有一个我正在尝试执行的更新声明:
String update_stock = "UPDATE " + table_name_ + " SET " + current_stock + " = " + current_stock + " - " + sub_stock + " where item_name = '" + item_name + "'";
getWritableDatabase().rawQuery(update_stock, null);
我已经在日志Log.d("updatesss", update_stock);
中检查了查询,该查询给了我:
UPDATE APPLE_CHILLAM SET current_stock = current_stock - 1 where item_name = 'Double Apple'
该值未获得更新。我错过了什么?
current_stock
列的数据类型为int。
答案 0 :(得分:1)
使用execSQL
代替rawQuery
:
execSQL("UPDATE " + table_name_ + " SET " + current_stock + " = " + current_stock - sub_stock + " where item_name = '" + item_name + "'");
execSql
与rawQuery
之间的差异:
执行一个非SELECT的SQL语句或任何其他返回数据的SQL语句。
它无法返回任何数据(例如受影响的数量) 行)。相反,我们鼓励你使用insert(String,String, ContentValues),update(String,ContentValues,String,String [])等 al,如果可能的话。
运行提供的SQL并在结果集上返回一个Cursor。
答案 1 :(得分:1)
尝试这样的事情:
SQLiteOpenHelper dbHelper = new DBHelper(this);
SQLiteDatabase database = dbHelper.getWritableDatabase();
database.execSQL("UPDATE " + table_name_ + " SET " + current_stock + " = " + current_stock + " - " + sub_stock + " where item_name = '" + item_name + "'");