SQLite
 sql >> डेटाबेस >  >> RDS >> SQLite

SQLite कनेक्शन लीक हो गया, हालांकि सब कुछ बंद हो गया

उद्धरण में बोल्ड किया गया फ़ॉन्ट आपके कोड के इस भाग से मेल खाता है:

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

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

<ब्लॉककोट>

दृष्टिकोण # 1:SQLiteOpenHelper को त्वरित करने के लिए एक सार फ़ैक्टरी का उपयोग करें

अपने डेटाबेस सहायक को स्थिर आवृत्ति चर के रूप में घोषित करें और सिंगलटन संपत्ति की गारंटी के लिए सार फैक्टरी पैटर्न का उपयोग करें। नीचे दिया गया नमूना कोड आपको डेटाबेस हेल्पर वर्ग को सही ढंग से डिजाइन करने के बारे में एक अच्छा विचार देना चाहिए।

स्थिर फ़ैक्टरी getInstance विधि यह सुनिश्चित करती है कि किसी भी समय केवल oneDatabaseHelper मौजूद रहेगा। यदि mInstanceobject को प्रारंभ नहीं किया गया है, तो एक बनाया जाएगा। यदि कोई पहले ही बनाया जा चुका है तो उसे बस वापस कर दिया जाएगा।

आपको new DatabaseHelper(context) का उपयोग करके अपने सहायक ऑब्जेक्ट को प्रारंभ नहीं करना चाहिए .
इसके बजाय, हमेशा उपयोग करेंDatabaseHelper.getInstance(context) , क्योंकि यह गारंटी देता है कि पूरे एप्लिकेशन के जीवनचक्र में केवल एक डेटाबेस सहायक मौजूद रहेगा।

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQLite डेटाबेस को CSV फ़ाइल में निर्यात करें

  2. Android एप्लिकेशन में अधिकतम SQLite डेटाबेस आकार

  3. SQLiteDatabase कर्सर केवल Android 5.0+ उपकरणों पर खाली है

  4. SQLite दिनांक/समय कार्यों के लिए मान्य संशोधक

  5. उबंटू में SQLite और SQLite ब्राउज़र कैसे स्थापित करें