查询Android数据库是否存在!

我为我的android应用程序创build了一个数据库,其中包含静态数据,不需要更新/删除function,因此当应用程序启动时,我想检查数据库是否存在,如果没有,那么执行我的dbAdapter类。 我知道它是一个简单的if语句,但我只是想知道最有效的方式来查询数据库是否存在。

干杯

/** * 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是数据库文件的path

我宁愿直接检查文件的存在:

 private static boolean doesDatabaseExist(Context context, String dbName) { File dbFile = context.getDatabasePath(dbName); return dbFile.exists(); } 

当你初始化下面的类时:

 mOpenHelper = new DatabaseHelper(getContext()); 

这将自动创build数据库,如果它不存在。 它还允许通过将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()); } } } 

很简单:在try块中打开数据库,使用da databse的path,如:

 try{ SQLiteDatabase dbe = SQLiteDatabase.openDatabase("/data/data/bangla.rana.fahim/databases/dictionary", null,0); Log.d("opendb","EXIST"); dbe.close(); } 

如果发生exception,那么数据库不会退出,因此创build它:

 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(); } 

就这样你就完成了:)

在主要活动中创build全局数据库辅助类对象。 在MainActivity的onCreate()函数中试试这个:

 //global database helper variable DatabaseHelper dbh; //in the onCreate() if(dbh.getReadableDatabase()!=null) //view the list else //create db