これは、この質問に対するフォローアップの質問です。
Android.com からこのチュートリアルを読んでいて、チュートリアルに従ってこのコードを作成しました。
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.provider.BaseColumns;
public final class SongDbHelper extends SQLiteOpenHelper {
// If you change the database schema, you must increment the database version.
public static final int DATABASE_VERSION = 1;
public static final String DATABASE_NAME = "Song.db";
private static final String TEXT_TYPE = " TEXT";
private static final String PRIMARY_KEY_TYPE = " INTEGER PRIMARY KEY";
private static final String COMMA_SEP = ",";
private static final String SQL_CREATE_ENTRIES =
"CREATE TABLE " + SongEntry.TABLE_NAME + " (" +
SongEntry._ID + PRIMARY_KEY_TYPE + COMMA_SEP +
SongEntry.COLUMN_NAME_SONG_TITLE + TEXT_TYPE + COMMA_SEP +
SongEntry.COLUMN_NAME_ENGLISH_LYRICS + TEXT_TYPE + COMMA_SEP +
SongEntry.COLUMN_NAME_ROMAJI_LYRICS + TEXT_TYPE + COMMA_SEP +
SongEntry.COLUMN_NAME_KANJI_LYRICS + TEXT_TYPE + COMMA_SEP +
SongEntry.COLUMN_NAME_INFO + TEXT_TYPE +
" )";
private static final String SQL_DELETE_ENTRIES =
"DROP TABLE IF EXISTS " + SongEntry.TABLE_NAME;
public SongDbHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
public void onCreate(SQLiteDatabase db) {
db.execSQL(SQL_CREATE_ENTRIES);
}
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// This database is only a cache for online data, so its upgrade policy is
// to simply to discard the data and start over
db.execSQL(SQL_DELETE_ENTRIES);
onCreate(db);
}
public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {
onUpgrade(db, oldVersion, newVersion);
}
public static abstract class SongEntry implements BaseColumns {
public static final String TABLE_NAME = "Song";
public static final String COLUMN_NAME_SONG_TITLE = "song_title";
public static final String COLUMN_NAME_ENGLISH_LYRICS = "english_lyrics";
public static final String COLUMN_NAME_ROMAJI_LYRICS = "romaji_lyrics";
public static final String COLUMN_NAME_KANJI_LYRICS = "kanji_lyrics";
public static final String COLUMN_NAME_INFO = "info";
}
}
アプリを Google Play ストアに公開し、ユーザーがアプリをインストールすると、SongDbHelper.onCreate()
自動的に呼び出され、Song
テーブルを使用してデータベースが作成されます。このデータベースはどのようにして値で満たされるのでしょうか? SongDbHelper.onCreate()
メソッドにデータを入力するコードを書く必要があると思います。つまり、データをソース コードのどこかに保存する必要があります。
歌詞をstrings.xml
ファイルに保存しようと思ったのですが、冗長に思えます。次に、歌詞がstrings.xml
ファイルとデータベースに保存されます。SELECT
その場合、データを呼び出してフィルター処理する必要がない限り、データベースはほとんど必要ありません。これは本当に人々がデータベースに入力する方法ですか?
理想的には、自分でデータベースを埋めてから、ユーザーにアプリ ストアからデータベースをダウンロードしてもらいたいと考えています。そんなことはできないと人々は言います。それは本当に本当ですか?データを 2 つの場所 (データベースと)に置くのはもったいないようです。 strings.xml
たくさんのデータがあるかもしれません!
ほとんどの人は、アプリでインターネット サーバーからデータベースをダウンロードしていますか? 公開したすべてのアプリにインターネット サーバーを用意する必要はなく、Google Play でデータベースをホストするだけで済みます。