我有一个应用程序在启动时检查数据库是否存在。如果没有退出,则创建一个新的,如果存在则访问数据库。你能告诉我如何检查 db(SQlite) 的存在吗?
问问题
1335 次
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 回答