如何以编程方式删除Android Sqlite数据库

如何以编程方式删除Android Sqlite数据库,第1张

概述我试图在我的应用程序中提供一个选项,供用户擦除所有数据并重新开始.我尝试过一些东西,但似乎没有一个在数据仍然存在的意义上.这是我的第一次尝试:publicvoidclearDatabase(Contextcontext){DatabaseHelperhelper=newDatabaseHelper(context);SQLiteDa

我试图在我的应用程序中提供一个选项,供用户擦除所有数据并重新开始.我尝试过一些东西,但似乎没有一个在数据仍然存在的意义上.这是我的第一次尝试:

public voID clearDatabase(Context context) {        DatabaseHelper helper = new DatabaseHelper(context);        sqliteDatabase database = helper.getWritableDatabase();        database.delete(Constants.TRANSACTION_table, null, null); //erases everything in the table.        database.delete(Constants.CUSTOMER_table, null, null);        database.delete(Constants.RETAILER_table, null, null);        database.close();    }

这似乎工作,但然后应用程序将重新启动时崩溃.

然后我在sqliteOpenHelper子类中尝试这个

  public voID resetDatabase() {    sqliteDatabase database = getWritableDatabase();    database.execsql("DROP table IF EXISTS customer_table");    database.execsql("DROP table IF EXISTS transaction_table");    database.execsql("DROP table IF EXISTS retailer_table");    database.execsql(CREATE_CUSTOMER_table);    database.execsql(CREATE_TRANSACTION_table);    database.execsql(CREATE_RETAILER_table);    database.close();}

这不会在重新启动时崩溃,但数据仍然存在.唯一有效的是我以编程方式更改版本号.但是当我从IDE运行应用程序时,它将具有较旧的版本号,并且应用程序将无法启动,因为设备上的版本号高于代码中的版本号.

我还能尝试什么?

解决方法:

最后这对我有用

首先删除并创建数据库

  public voID resetDatabase() {        sqliteDatabase database = getWritableDatabase();        database.execsql("DROP table IF EXISTS " + Constants.CUSTOMER_table);        database.execsql("DROP table IF EXISTS " + Constants.TRANSACTION_table);        database.execsql("DROP table IF EXISTS " + Constants.RETAILER_table);        database.execsql(CREATE_CUSTOMER_table);        database.execsql(CREATE_TRANSACTION_table);        database.execsql(CREATE_RETAILER_table);        database.close();    }

然后重新启动从这个问题how to programmatically “restart” android app?借来的应用程序

public static voID resetApp() {        sDatabase.resetDatabase();         preferenceEditor.clear();        preferenceEditor.commit();        Intent mStartActivity = new Intent(sContext, MainActivity.class);        int mPendingIntentID = 123456;        PendingIntent mPendingIntent = PendingIntent.getActivity(sContext, mPendingIntentID,    mStartActivity, PendingIntent.FLAG_CANCEL_CURRENT);        AlarmManager mgr = (AlarmManager)sContext.getSystemService(Context.ALARM_SERVICE);        mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 100, mPendingIntent);        System.exit(0);    }
总结

以上是内存溢出为你收集整理的如何以编程方式删除Android Sqlite数据库全部内容,希望文章能够帮你解决如何以编程方式删除Android Sqlite数据库所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1114884.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存