Я создал базу данных для своего приложения для Android, которое содержит статические данные и не требует, обновляют/удаляют функциональность таким образом, когда приложение запускается, я хочу проверить, существует ли дб и если не затем выполняют мой dbAdapter класс. Я знаю, что это - простое, если оператор, но я просто задавался вопросом самый эффективный способ запросить, существует ли дб.
Удачи
/**
* Check if the database exist and can be read.
*
* @return true if it exists and can be read, false if it doesn't
*/
private boolean checkDataBase() {
SQLiteDatabase checkDB = null;
try {
checkDB = SQLiteDatabase.openDatabase(DB_FULL_PATH, null,
SQLiteDatabase.OPEN_READONLY);
checkDB.close();
} catch (SQLiteException e) {
// database doesn't exist yet.
}
return checkDB != null;
}
где DB_FULL_PATH - это путь к файлу вашей базы данных.
И причина, по которой я не просто проверяю, существует ли файл, заключается в том, что он не может сказать, (а) это ли файл sqlite db, (б) файл не поврежден и может быть фактически прочитан, т.е. из-за частичной загрузки или как бы то ни было, он был создан.
Когда вы инициализируете приведенный ниже класс с:
mOpenHelper = new DatabaseHelper(getContext());
Это автоматически создаст базу данных, если ее нет. Это также позволит вам обновить базу данных, изменив DB_VER на более высокий номер.
Затем, чтобы вы могли запрашивать базу данных, используйте:
SQLiteDatabase db = mOpenHelper.getWritableDatabase();
вышеуказанные методы db.query() & db.insert() и т.д.
private static class DatabaseHelper extends SQLiteOpenHelper {
private static final String DB_NAME = "db_name.db";
private static final int DB_VER = 1;
public DatabaseHelper(Context context) {
super(context, DB_NAME, null, DB_VER);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE table_name (" + "_id INTEGER PRIMARY KEY, "
+ " column_name_2 TEXT );");
.execSQL("INSERT INTO table_name "
+ "(column_name_2) "
+ "VALUES " + "('hello world');");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
Log.w(TAG + "Upgrading database from version " + oldVersion + " to "
+ newVersion + ", which will destroy all old data");
try {
db.execSQL("DROP TABLE IF EXISTS table_name");
onCreate(db);
} catch (SQLException e) {
Log.e(TAG + "getting exception "
+ e.getLocalizedMessage().toString());
}
}
}