sql >> Databáze >  >> RDS >> SQLite

Byl nalezen únik databáze SQLite

Nejsem si jistý, zda používáte SQLiteOpenHelper správně... nepotřebujete tu myDataBase myšlenkou je, že za vás spravuje připojení k databázi. Neuvádějte podtřídu tímto způsobem... pokud neděláte věci v onCreate() atd., které zde nejsou zveřejněny, vypadá to, že stačí použít SQLiteOpenHelper přímo, tj.:

SQLiteOpenHelper sqlite = new SQLiteOpenHelper(ctx, DB_PATH+DB_NAME, null,
    DB_VERSION_NUMBER);

Za předpokladu, že ukončení aktivity by také mělo zastavit vaši úlohu na pozadí, doporučuji zavolat AsyncTask.cancel(true) z vašeho Activity.onPause() . Ujistěte se, že je databáze vyčištěna z onCancelled().

A pokud je vaše úloha na pozadí jedinou věcí, která čte databázi, vytvořte ji vlastní instanci SQLiteOpenHelper. Je snadné se dostat do problémů se statickými daty, takže je lepší se jim IMHO vyhnout. Udělal bych něco takového:

protected class BackTask extends AsyncTask<String, Integer, String>
{
    private SQLiteOpenHelper sqlite;

    public void BackTask(Context ctx) {
        sqlite = new SQLiteOpenHelper(ctx, DB_PATH+DB_NAME, null,
                                      DB_VERSION_NUMBER);
    }
    @Override
    protected String doInBackground(String... params) 
    {
         try {
                //get requeste data from the database
                //access the web service
                return result;

              } catch (Exception e) { 
         }
         return null;
    }

    @Override
    protected void onCancelled() {
         sqlite.close();
    }

    @Override
    protected void onPostExecute(String result)
         sqlite.close();
         // Update UI here
    }
}


  1. Vyloučení nepodporovaných tabulek k zachycení službou Oracle Streams

  2. Vytvoření horkého pohotovostního režimu na Amazon AWS pomocí MariaDB Cluster

  3. Jak HEX() funguje v MariaDB

  4. Získejte počet záznamů ovlivněných INSERT nebo UPDATE v PostgreSQL