2016-04-17 8 views
0

を更新していません。この時点で表が作成されます。 the remote shellを使用してDBにUpdate関数は、私は私のコンテンツプロバイダで働い更新方法は、更新は0を返し、テーブルに更新された情報はありません取得するために苦労していたデータベース

 message = "Player 1 wins";// we should get the name 
    ContentValues mUpdateValues = new ContentValues(); 
    String[] projectionFields = new String[] { 
    LeagueContract.COLUMN_NAME_SCORE }; 
    Uri uri = ContentUris.withAppendedId(LeagueContentProvider.LEAGUE_URI, player1Id); 
    ContentResolver content = getContentResolver(); 
    Cursor cursor = content.query(uri, projectionFields, null, null, null); 
    cursor.moveToFirst(); 
    int score = cursor.getInt(0); 
    score ++; 
    ContentValues values = new ContentValues(); 
    values.put(LeagueContract.COLUMN_NAME_SCORE,score); 
    content.update(uri,values,null,null); 
+0

すべてがうまく見えます。あなたはプレイヤーIDを確認しましたか? –

+0

はい、それは、データの細かさからスコアを引き出します。だから、player1Idは正しい。私はそれがすべて見えて本当に問題を見ることができないと思った! –

+1

問題が解決しました.COLUMN_KEY_IDは整数で、列のタイトルが使用されていました。 –

答えて

0

接続し、手動で更新しよう:私は、コンテンツプロバイダの更新を呼び出すのはここだ

@Override 
public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { 
    SQLiteDatabase db = leagueDBHelper.getWritableDatabase(); 
    int rowsUpdated = 0; 
    int uriType = uriMatcher.match(uri); 
    switch (uriType) { 
     case LEAGUES: 
      rowsUpdated = db.update(LeagueContract.LEAGUE_TABLE_NAME, 
        values, selection, selectionArgs); 
      break; 
     case LEAGUE_ID: 
      String newSelection = appendToSelection(uri, selection); 
      rowsUpdated = db.update(LeagueContract.LEAGUE_TABLE_NAME, 
        values, newSelection, selectionArgs); 

      break; 
     default: 
      throw new IllegalArgumentException("Unrecognised uri: " + uri); 
    } 
    getContext().getContentResolver().notifyChange(uri,null); 
    return rowsUpdated; 

} 

private String appendToSelection(Uri uri, String selection) { 
    String id = uri.getLastPathSegment(); 
    StringBuilder newSelection = new StringBuilder(LeagueContract.COLUMN_KEY_ID + "=" + id); 
    if (selection != null && !selection.isEmpty()) { 
     newSelection.append(" AND " + selection); 
    } 
    return newSelection.toString(); 
} 

は、ここで更新機能です。

また、あなたは値をトレースするために、あなたのコンテンツプロバイダにログメッセージを追加することができます。

関連する問題