我正在我的数据库帮助程序类中执行更新方法。但我无法解决我犯错误的地方。日志中没有错误,但表中的字段不会更新。
public void updateJSON(long id, String newString) {
ContentValues dataToInsert = new ContentValues();
dataToInsert.put("cityJSON", newString);
String where = "id=?";
String[] whereArgs = new String[]{String.valueOf(id)};
this.db.update(TABLE_NAME, dataToInsert, where, whereArgs);
}
我正在传输json字符串(带逗号,括号等)和字段的ID。
答案 0 :(得分:0)
也许您想尝试以下代码:String mString = Long.toString(id);
答案 1 :(得分:0)
而不是
String[] whereArgs = new String[]{String.valueOf(id)};
试
String[] whereArgs = { Long.valueOf(id).toString() };
对我有用。
答案 2 :(得分:0)
db.update(...)
方法返回受影响的行数。您可以在日志中显示此值。
如果受影响的行数等于零:
db
宣称为readableDatabase
而不是writableDatabase
?我的意思是 SQLiteDatabase db = getReadableDatabase();
而不是getWritableDatabase()
?
编辑:
你可以编写帮助函数,只是为了100%确定行(你需要的id)实际存在于数据库中:
public boolean isItemExistsInDB( int yourId){
String selectQuery = "SELECT * FROM " +
TABLE_NAME+ "
WHERE " + " id = '" + yourId+ "'";
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
//count of rows with "id=yourId"
int count= cursor.getCount();
Log.d(getClass().getSimpleName(), "count="+count);
if(count>0){
return true;
}
else{
//there is no item with "id=yourId"
return false;
}
}
答案 3 :(得分:0)
我认为使用此代码,
this.db.update(TABLE_NAME, dataToInsert, COLUMNNAME + "=?" ,
new String[]{String.valueOf(id)});