मुझे close the connection
और close the cursor
जैसी कई चीज़ें मिलीं, लेकिन मैं ये सब कुछ करता हूं। फिर भी SQLite कनेक्शन लीक और मैं इस तरह एक चेतावनी मिलती है:SQLite कनेक्शन लीक हो गया है हालांकि सबकुछ बंद हो गया है
DatabaseManager dbm = new DatabaseManager(this);
मेरी डेटाबेस का कोड:
A SQLiteConnection object for database was leaked!
मैं इस एक डेटाबेस प्रबंधक, जो मैं निम्नलिखित कोड के साथ मेरी गतिविधियों में कॉल प्रबंधक वर्ग अब इस प्रकार है:
:public class DatabaseManager {
private static final int DATABASE_VERSION = 9;
private static final String DATABASE_NAME = "MyApp";
private Context context = null;
private DatabaseHelper dbHelper = null;
private SQLiteDatabase db = null;
public static class DatabaseHelper extends SQLiteOpenHelper {
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
//create database tables
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
//destroy and recreate them
}
}
public DatabaseManager(Context ctx) {
this.context = ctx;
}
private DatabaseManager open() throws SQLException {
dbHelper = new DatabaseHelper(context);
db = dbHelper.getWritableDatabase();
if (!db.isReadOnly()) {
db.execSQL("PRAGMA foreign_keys = ON;");
}
return this;
}
private void close() {
dbHelper.close();
}
}
जब मैं एक डेटाबेस विधि कॉल, मैं निम्नलिखित काम करते हैं 10
public Object getData() {
open();
//... database operations take place ...
close();
return data;
}
लेकिन जैसा कि मैंने कहा, मुझे अभी भी यह SQLite कनेक्शन लीक चेतावनी मिलती है।
मैं क्या गलत कर रहा हूं?
private DatabaseManager open() throws SQLException {
dbHelper = new DatabaseHelper(context);
db = dbHelper.getWritableDatabase();
से:
मुझे लगता है कि आप केवल अपनी DBHelper बंद कर रहे हैं, लेकिन नहीं डाटाबेस ही – Opiatefuchs
मुझे लगता है कि आप db.close बुलाना चाहिए () भी –
कोई फर्क नहीं पड़ता, अगर मैं ऐसा करता हूं या नहीं। मैं वैसे भी संदेश प्राप्त करूंगा। लेकिन मैंने कहीं पढ़ा है, कि आपको ऐसा करने की आवश्यकता नहीं है, जब आप dbHelper.close() – flp