重複の可能性:
Android 2.2で新しいデータベースを作成する前に、既存のデータベースを確認するにはどうすればよいですか?
起動時にデータベースの存在を確認するアプリがあります。終了しない場合は新しいものを作成し、存在する場合はデータベースにアクセスします。db(SQlite)の存在を確認する方法を教えてください。
重複の可能性:
Android 2.2で新しいデータベースを作成する前に、既存のデータベースを確認するにはどうすればよいですか?
起動時にデータベースの存在を確認するアプリがあります。終了しない場合は新しいものを作成し、存在する場合はデータベースにアクセスします。db(SQlite)の存在を確認する方法を教えてください。
SQLiteOpenHelperが呼び出されたときonCreate
にtrue に設定されるブール フラグを使用します。ここで私の完全なコードを見つけることができます
Android は、多くの開発者がデータベースを管理するのに役立ちます。次のようなクラスが必要です(1列のみの単一のテーブル):
public class MyDBOpenHelper extends SQLiteOpenHelper {
private static final String queryCreationBdd = "CREATE TABLE partie (id INTEGER PRIMARY KEY)";
public MyDBOpenHelper(Context context, String name, CursorFactory factory, int version)
{
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db)
{
db.execSQL(queryCreationBdd);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
db.execSQL("DROP TABLE partie;");
db.execSQL("DELETE FROM sqlite_sequence"); //table which contains the next incremented key value
onCreate(db);
}
}
次に、これを行うだけです:
MyDBOpenHelper databaseHelper = new MyDBOpenHelper(context, "dbname.db", null, 1);
SQLiteDatabase bdd = databaseHelper .getWritableDatabase();
必要に応じて、Android はデータベースを作成する (onCreate メソッドを呼び出す) か、既に存在するデータベースを提供します。4 番目のパラメーターは、データベースのバージョンです。現在作成されているデータベースが最新バージョンでない場合、onUpgrade が呼び出されます。
EDIT:データベースパスは次のようになります:
/data/data/fr.mathis.application/databases/dbname.db
query-if-android-database-exists をご覧ください
次のようなデータベースのパスを使用して、try ブロックでデータベースを開きます。
try{
SQLiteDatabase dbe = SQLiteDatabase.openDatabase("/data/data/bangla.rana.fahim/databases/dictionary", null,0);
Log.d("opendb","EXIST");
dbe.close();
}
例外が発生した場合、データベースが存在しないため作成します。
catch(SQLiteException e){
Log.d("opendb","NOT EXIST");
SQLiteDatabase db = openOrCreateDatabase("dictionary", MODE_PRIVATE, null);
db.execSQL("CREATE TABLE IF NOT EXISTS LIST(wlist varchar);");
db.execSQL("INSERT INTO LIST VALUES('খবর');");
db.execSQL("INSERT INTO LIST VALUES('কবর');"); //whatever you want
db.close();
}
これで完了です:)