android中的Sqlite更新查询

时间:2012-12-07 11:30:56

标签: java android sqlite

我正在我的数据库帮助程序类中执行更新方法。但我无法解决我犯错误的地方。日志中没有错误,但表中的字段不会更新。

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。

4 个答案:

答案 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(...)方法返回受影响的行数。您可以在日志中显示此值。 如果受影响的行数等于零:

  1. 也许行名有问题?
  2. 也许db宣称为readableDatabase而不是writableDatabase?我的意思是
  3. 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)});