Запрос, если база данных Android существует!
Я создал базу данных для моего приложения для Android, которое содержит статические данные и не требует функциональности обновления/удаления, поэтому, когда приложение запускается, я хочу проверить, существует ли db, а если нет, то выполните мой класс dbAdapter. Я знаю, что это простой оператор if, но я просто задавался вопросом, как наиболее эффективный способ запроса, существует ли db.
Приветствия
Ответы
Ответ 1
/**
* 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 - это путь к файлу базы данных
Ответ 2
Я бы предпочел проверить наличие файла напрямую:
private static boolean doesDatabaseExist(Context context, String dbName) {
File dbFile = context.getDatabasePath(dbName);
return dbFile.exists();
}
Ответ 3
Когда вы инициализируете класс ниже:
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());
}
}
}
Ответ 4
это просто:
Откройте свою базу данных в блоке try с помощью пути da databse, например:
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();
}
чтобы это вы сделали:)
Ответ 5
Создайте объект вспомогательного класса глобальной базы данных в своем основном действии. В функции MainActivity onCreate() попробуйте следующее:
//global database helper variable
DatabaseHelper dbh;
//in the onCreate()
if(dbh.getReadableDatabase()!=null)
//view the list
else
//create db
Ответ 6
Я попробовал версию, предоставленную Матиасом Конрадтом, но я обнаружил, что просто проверить, недостаточно ли DB!= null. Я изменил это:
/**
* 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(String InDBFile) {
SQLiteDatabase checkDB = null;
boolean res = false;
try {
checkDB = SQLiteDatabase.openDatabase(InDBFile, null,
SQLiteDatabase.OPEN_READONLY);
res = (checkDB.getVersion() > 0);
checkDB.close();
} catch (SQLiteException e) {
// database doesn't exist yet.
Log.e("checkDataBase", "Selected file could not be opened as DB.");
res = false;
}
return res;
}