0

可能重复:
如何在 Android 2.2 上创建新数据库之前检查现有数据库?

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

4

3 回答 3

0

我使用一个布尔标志,在调用SQLiteOpenHelperonCreate时设置为true 。你可以在这里找到我的完整代码

于 2012-09-14T12:22:14.360 回答
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();
}

就是这样,你完成了:)

于 2012-09-14T13:25:16.153 回答
0

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

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

/data/data/fr.mathis.application/databases/dbname.db
于 2012-09-14T12:25:57.670 回答