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

SQLite Connection uniklo, i když vše bylo uzavřeno

Tučné písmo v citaci odpovídá této části vašeho kódu:

private DatabaseManager open() throws SQLException {
    dbHelper = new DatabaseHelper(context);
    db = dbHelper.getWritableDatabase();

z:http://www.androiddesignpatterns.com/2012/05/correctly-managing-your-sqlite-database.html

Přístup č. 1:Použijte abstraktní továrnu k vytvoření instance SQLiteOpenHelper

Deklarujte svého pomocníka databáze jako statickou proměnnou instance a použijte vzor Abstract Factory k zaručení vlastnosti singleton. Níže uvedený ukázkový kód by vám měl poskytnout dobrou představu o tom, jak správně navrhnout třídu DatabaseHelper.

Statická tovární metoda getInstance zajišťuje, že v daném okamžiku bude existovat pouze jedenDatabaseHelper. Pokud objekt mInstance nebyl inicializován, bude vytvořen. Pokud byl již vytvořen, bude jednoduše vrácen.

Svůj pomocný objekt byste neměli inicializovat pomocí new DatabaseHelper(context) .
Namísto toho vždy použijteDatabaseHelper.getInstance(context) , protože zaručuje, že během celého životního cyklu aplikace bude existovat pouze jeden databázový pomocník.

public static class DatabaseHelper extends SQLiteOpenHelper { 

  private static DatabaseHelper mInstance = null;

  private static final String DATABASE_NAME = "database_name";
  private static final String DATABASE_TABLE = "table_name";
  private static final int DATABASE_VERSION = 1;

  public static DatabaseHelper getInstance(Context ctx) {

    // Use the application context, which will ensure that you 
    // don't accidentally leak an Activity's context.
    // See this article for more information: http://bit.ly/6LRzfx
    if (mInstance == null) {
      mInstance = new DatabaseHelper(ctx.getApplicationContext());
    }
    return mInstance;
  }

  /**
   * Constructor should be private to prevent direct instantiation.
   * make call to static factory method "getInstance()" instead.
   */
  private DatabaseHelper(Context ctx) {
    super(ctx, DATABASE_NAME, null, DATABASE_VERSION);
  }
}


  1. Návrat XFS na Linux

  2. Jak mohu rozdělit dlouhý, jeden SQLiteOpenHelper do několika tříd, jednu pro každou tabulku

  3. Base64 kódování a dekódování v oracle

  4. JSON_UNQUOTE() – Odstranění nabídek z dokumentu JSON v MySQL