0
私はSQLiteデータベースにデータを挿入しようとしていますし、そのために、私は以下に示すように、私はAPIから取得したデータを挿入するための簡単な方法を書かれている:ContentValues.put()を使ってオブジェクトのリストを挿入するには?
public static ContentValues gameInfoToContentValues(@NonNull GameInfoList game) {
ContentValues values = new ContentValues();
values.put(GameEntry.COLUMN_GAME_ID, game.id());
values.put(GameEntry.COLUMN_GAME_ALIASES, game.aliases());
values.put(GameEntry.COLUMN_GAME_API_DETAIL_URL, game.api_detail_url());
values.put(GameEntry.COLUMN_GAME_DATE_ADDED, game.date_added());
values.put(GameEntry.COLUMN_GAME_DATE_LAST_UPDATED, game.date_last_updated());
values.put(GameEntry.COLUMN_GAME_SMALL_IMAGE, game.image().small_url());
values.put(GameEntry.COLUMN_GAME_MEDIUM_IMAGE, game.image().medium_url());
values.put(GameEntry.COLUMN_GAME_HD_IMAGE, game.image().super_url());
values.put(GameEntry.COLUMN_GAME_NAME, game.name());
values.put(GameEntry.COLUMN_GAME_ORIGINAL_RELEASE_DATE, game.original_game_rating());
return values;
}
私は最後
のために取得していますgame.original_game_rating();
これはオブジェクトのリストであるため、正しく正当化されます。
以下の通りであるメソッドのパラメータとして渡される "GameInfoList" という名前の私のオブジェクトクラス:
public abstract long id();
@Nullable
public abstract String aliases();
@Nullable
public abstract String api_detail_url();
@Nullable
public abstract String date_added();
@Nullable
public abstract String date_last_updated();
@Nullable
public abstract GameImages image();
@Nullable
public abstract String name();
@Nullable
public abstract List<GameRatings> original_game_rating();
EDIT
下図のように、私もGameRatingsオブジェクトを持っている:
@Nullable
public abstract String api_detail_url();
public abstract long id();
@Nullable
public abstract String name();
ここでは、ゲームの評価用の名前を表の中に挿入します。この名前は、コードを次のように変更しました。
public static ContentValues gameInfoToContentValues(@NonNull GameInfoList game) {
ContentValues values = new ContentValues();
if(game.original_game_rating() != null) {
for(GameRatings ratings : game.original_game_rating()) {
values.put(GameEntry.COLUMN_GAME_ID, game.id());
values.put(GameEntry.COLUMN_GAME_ALIASES, game.aliases());
values.put(GameEntry.COLUMN_GAME_API_DETAIL_URL, game.api_detail_url());
values.put(GameEntry.COLUMN_GAME_DATE_ADDED, game.date_added());
values.put(GameEntry.COLUMN_GAME_DATE_LAST_UPDATED, game.date_last_updated());
values.put(GameEntry.COLUMN_GAME_SMALL_IMAGE, game.image().small_url());
values.put(GameEntry.COLUMN_GAME_MEDIUM_IMAGE, game.image().medium_url());
values.put(GameEntry.COLUMN_GAME_HD_IMAGE, game.image().super_url());
values.put(GameEntry.COLUMN_GAME_NAME, game.name());
values.put(GameEntry.COLUMN_GAME_ORIGINAL_GAME_RATING, ratings.name());
}
}
return values;
}
これは正しいですか?
sqliteデータベースにはプリミティブ値のみが格納されます。それをテキストとして保存する必要がありますし、リストを使用してリストに変換することができます –
このデータを挿入するテーブルのスキーマは何ですか?具体的には、「COLUMN_GAME_ORIGINAL_RELEASE_DATE」と指定された列のデータ型は何ですか? – CommonsWare
@CommonsWare COLUMN_GAME_ORIGINAL_RELEASE_DATEのデータ型はTEXTです。 –