1

DB ヘルパー クラスで update メソッドを実行しています。しかし、私はどこで間違いを犯したのか解決できません。ログにエラーはありませんが、テーブルのフィールドが更新されません。

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

4 に答える 4

0

このコードを使うと思います、

this.db.update(TABLE_NAME, dataToInsert, COLUMNNAME + "=?" ,
            new String[]{String.valueOf(id)});
于 2012-12-07T12:09:04.840 に答える
0

db.update(...)メソッドは、影響を受けた行数を返します。この値をログに表示できます。影響を受けた行数がゼロの場合:

  1. 行名に何か問題があるのでしょうか?
  2. 代わりに?dbとして宣言されている可能性があります。つまりreadableDatabasewritableDatabase

SQLiteDatabase db = getReadableDatabase();

代わりにgetWritableDatabase()

編集:

行(必要なIDを持つ)が実際にデータベースに存在することを100%確実にするために、ヘルパー関数を書くことができます:

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;
    }
}
于 2012-12-07T11:55:14.667 に答える
0

多分あなたはこのコードを試してみたい:String mString = Long.toString(id);

于 2012-12-07T11:47:27.883 に答える
0

それ以外の

String[] whereArgs = new String[]{String.valueOf(id)};

試す

String[] whereArgs = { Long.valueOf(id).toString() };

それは私のために働きます。

于 2012-12-07T11:47:51.800 に答える