Android Studio在onCreate中插入数据并在onDestroy中删除数据

时间:2016-01-07 18:11:56

标签: java android sqlite

我在onCreate中使用了一个插入查询,我希望删除onDestroy中的所有数据,但我无法使其工作,每次启动应用程序时数据都会加倍。似乎onDestroy无效。

结帐我的代码

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_student_view);
    toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    myDbHelper = new DatabaseHelper(this, DATABASE_NAME, null,
            DATABASE_VERSION);

    sqlHandler = new SQLHandler(this);
    mDb = myDbHelper.getWritableDatabase();
    String query = "INSERT INTO scholar_table(Name,Top,Continent,Region,Location,Introduction,Alumni) " +
            "values ('Wesleyan University Philippines','290','Luzon','Region 3','Nueva Ecija','WUP Intro','WUP Alumni')";
    sqlHandler.executeQuery(query);
}
@Override
public void onDestroy(){
    super.onDestroy();
    sqlHandler = new SQLHandler(this);
    mDb = myDbHelper.getWritableDatabase();
    String query = "DELETE * FROM scholar_table";
    sqlHandler.executeQuery(query);
    finish();
}

2 个答案:

答案 0 :(得分:1)

尝试将基本代码放到onStop()方法中,可能会帮助您解决问题

基本上,从来没有保证会调用onDestroy(),在某些情况下,你的app等进程会被直接杀死,无论如何都会绕过方法调用。

看看这个: Activity OnDestroy never called?

而且:

http://developer.android.com/reference/android/app/Activity.html#onDestroy%28%29

答案 1 :(得分:0)

我建议将您的SQLite放入另一个文件中。

拿这个文件: https://github.com/kweaver00/Android-Samples/blob/master/Storage/SQLite/LocalStorageApp/app/src/main/java/com/weaverprojects/localstorageapp/Controller/LocalDB.java

制作你的onCreate():

Log.v(TAG, "Number of rows:" + String.valueOf(mLocalDB.numberOfRows()));
mLocalDB = new LocalDB(this, "db", null, 1);
mLocalDB.insert("John", "Smith");
Log.v(TAG, "Number of rows:" + String.valueOf(mLocalDB.numberOfRows()));

并在你的onDestroy:

Log.v(TAG, "Number of rows:" + String.valueOf(mLocalDB.numberOfRows()));
mLocalDB.deleteRow(1);
Log.v(TAG, "Number of rows:" + String.valueOf(mLocalDB.numberOfRows()));

可能会更改deleteRow的参数以满足您的需求,或删除每一行:

for(int i = 0;i<mLocalDB.numberOfRows();i++){
    mLocalDB.deleteRow(i);
}

或&#34;我&#34;可以从1开始。