2012-03-30 14 views
5

में एप्लिकेशन बंद हो गया था कल आवेदन सामान्य रूप से काम कर रहा था, और मैंने अपने कोड संपादित नहीं किए। लेकिन अब यह काम नहीं कर रहा है। logcatएंड्रॉइड/SQLITE ERROR/

close() was never explicitly called on database '/data/data/[myproject]/databases/MyDB' 
android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here 
at android.database.sqlite.SQLiteDatabase.<init>(SQLiteDatabase.java:1943) 
at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:1007) 
at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:986) 
at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:1051) 
at android.app.ContextImpl.openOrCreateDatabase(ContextImpl.java:770) 
at android.content.ContextWrapper.openOrCreateDatabase(ContextWrapper.java:221) 
at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:157) 
at mn.emondo.parliament.DBAdapter.open(DBAdapter.java:46) 
at mn.emondo.parliament.ProfileActivity.onCreate(ProfileActivity.java:46) 
at android.app.Activity.performCreate(Activity.java:4465) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) 
at android.app.ActivityThread.access$600(ActivityThread.java:123) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:137) 
at android.app.ActivityThread.main(ActivityThread.java:4424) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:511) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
at dalvik.system.NativeStart.main(Native Method) 
+0

आप 'ProfileActivity.java में जांच करने की आवश्यकता: 46' और' DBAdapter.java: 46' है.आप डेटाबेस कॉल समारोह कॉल करने के लिए भूल गया , जिसे आप डेटाबेस खोलने के लिए 'ProfileActivity.java:46' में उपयोग कर सकते हैं। – Herry

+0

आपको दिखाएं कि कोड हमें और अधिक विनिर्देश देगा कि आप डेटाबेस को कैसे खोलते हैं और बंद करते हैं। – Herry

उत्तर

2

एक बार जब आप डेटाबेस और कर्सर खोलते हैं तो आपको कक्षा या गतिविधि से बाहर निकलने से पहले इन दोनों को बंद करना होगा। db.close(); cr.close();

कृपया इसका उपयोग करें।

1

है आप कर्सर बंद नहीं किया है। यह आपके त्रुटि में लिखा गया है।

Application did not close the cursor or database object that was opened here 

इसलिए जैसे ही मैं आपका कोड नहीं देख सकता, बस जांचें कि आपने अपना कर्सर बंद नहीं किया है।

या अपनी परियोजना को साफ करने और इसे फिर से बनाने का प्रयास करें।

1

आप close() अपने डेटाबेस को भूल गए; अगली बार जब यह खोला जाएगा तो आपको DatabaseObjectNotClosedException अपवाद प्राप्त होगा।

1

यदि यह पहले से और नहीं काम कर रहा था अब ,, कोशिश डेटाबेस के संस्करण का नाम भी बदलकर ,,,

के बाद भले ही यह काम नहीं करता है, तो संस्करण नाम और डेटाबेस का नाम बदलें।

1

जब आप डेटाबेस से डेटा प्राप्त करने में समाप्त इस विधि का प्रयास करें ..
आप खुले डेटाबेस आप db.open कॉल करने की आवश्यकता() और जब आप अपने डेटाबेस काम खत्म तुम पास() विधि कॉल करने की आवश्यकता है। निम्न विधि का उपयोग करें।

db.close(); 

और आप अपने Activity.java से डेटाबेस को खोलने के लिए कॉल करना होगा

संबंधित मुद्दे