检查Android中是否存在数据库

时间:2012-09-14 12:16:23

标签: android sqlite

  

可能重复:
  How to check existing database before creating new database on Android 2.2?

我有一个应用程序,可以在启动时检查数据库是否存在。如果不是退出,则创建一个新的,然后再访问数据库。你能告诉我如何检查db(SQlite)的存在吗?

4 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

我使用一个布尔标志,当调用SQLiteOpenHelperonCreate时,该标志设置为true。您可以找到我的完整代码here

答案 2 :(得分:0)

Android帮助很多开发人员管理数据库。 你应该有一个这样的类(一个只有一列的表):

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方法)或为您提供已存在的数据库。第四个参数是数据库的版本。如果当前创建的数据库不是最新版本,则将调用onUpgrade。

编辑:数据库路径将是这样的:

/data/data/fr.mathis.application/databases/dbname.db

答案 3 :(得分:0)

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

就是你完成了:)