1

当我的第一个活动加载时,数据库在 OnCreate() 中创建。然后在下一个活动中,当我从表中删除几行并再次返回第一个活动时,所有数据库都被创建,其中包含所有记录。我希望数据库向我显示更新的表记录,而不是再次执行创建和插入表...

4

2 回答 2

0

我认为在第一个活动中在数据库中创建/插入值之前,您不会检查它是否已经存在,因此每次输入第一个活动时,您的数据库都会重建。因此,在使用以下方法创建数据库之前检查数据库是否已经存在:


在 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-05-30T07:54:03.290 回答
0

如果您计划首先创建数据库并逐步修改它,您可以使用SharedPreferences并且在您的资源中的某处您可以有一个代表您的应用程序版本的数字,这样只有当您增加这个数字时它才会被调用。

// In your onCreate function

SharedPreferences prefs = getSharedPreferences("myoptions", Context.MODE_PRIVATE);
int resourceVersion = //Gets the new version from the resources, for example XML
int applicationVersion = prefs.getInt("APPLICATION_VERSION", 0);
if(applicationVersion < resourceVersion ) {
  // Create or update your database here
  SharedPreferences.Editor editor = getSharedPreferences("myoptions", Context.MODE_PRIVATE).edit();
  editor.putInt("APPLICATION_VERSION", resourceVersion );
  editor.commit();
}
于 2012-05-30T08:07:36.950 回答