0
操作を選択するだけです。したがって、アプリケーションが開始する前にデータを挿入する必要があります。これを行う最善の方法は何ですか?Androidデータベースアプリケーション開始前にデータを検索
操作を選択するだけです。したがって、アプリケーションが開始する前にデータを挿入する必要があります。これを行う最善の方法は何ですか?Androidデータベースアプリケーション開始前にデータを検索
SQLiteOpenHelperのサブクラスを使用して、データベースにアクセスしてください。 onCreate
は、データベースの作成時に1回呼び出されます。
DBHelper db = new DBHelper(context);
db.getReadableDatabase().query(....);
db.close();
がSQLiteOpenHelper
のような何かを拡張するには:
あなたが行うことができ、あなたのDBを使用するには(テストされていないテーブルを作成するためのSQLを!):
public class DBHelper extends SQLiteOpenHelper {
private static final String DATABASE_NAME = "database.db";
private static final Integer DATABASE_VERSION = 1;
DBHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
/*
* Called ONCE on the very first db access (when the db file is created)
*/
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE mytable (_id PRIMARY KEY AUTOINCREMENT, value TEXT); \n" +
"INSERT INTO mytable (value) VALUES ('data'));");
}
/*
* Called every time you open a database
*/
@Override
public void onOpen(SQLiteDatabase db) {
}
/*
* Called ONCE if DATABASE_VERSION has changed since the last instantiation of DBHelper
*/
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
ご返信ありがとうございますが、私はさらに質問があります。私はあなたのDBHelperのようなクラスを使用しています。別のクラス - 私はDBAdapterと呼んでいます。私はあなたのようにDBHelperのインスタンスを作成しています。ただし、アプリケーションの起動ごとに呼び出されます。私はテーブルを作成して一度データを挿入したい。これをどうすれば解決できますか? 編集:メソッドonUpgradeで、私はすべてのテーブルを削除し、再びonCreateを呼び出します。これは問題ですか? – adaclks
すべてを削除して最初から作り直しても大丈夫です。 onUpgrade内からonCreateを呼び出すことでこれをやりたい場合は、それもOKです。 – thaussma
ありがとうございますが、すべてのアプリケーションの開始時に挿入操作を避けるにはどうすればよいですか? DBAdapterでDBHelperのインスタンスを作成しています。私のMainActivityでは、DBAdapterのインスタンスを作成しています。 – adaclks