मेरे पास एंड्रॉइड में एक SQLite डेटाबेस है और मैं ऑपरेशन को संभालने के लिए ContentProvider
का उपयोग करता हूं, जो एक कॉलम में एक अद्वितीय क्वालीफायर वाली तालिका में बने रहते हैं।क्या SQLiteConstraint पर भरोसा करना ठीक है और SQLite को मेरे लिए जांच करने दें? क्या कोई पकड़ है?
समस्या:
हालांकि, जब मैं insert
दोहराया मूल्यों डेटाबेस में, यह मेरी कोड से प्रति उल्लंघन नहीं करती है, लेकिन यह अभी भी SQLiteConstraintException
लॉग लाइनों के हजारों थूक, और मेरे उपयोगकर्ता है कि बस लॉग को प्रदूषित करने जैसा लगता है, कुछ अप्रकाशित। मैंने प्रयोग करने के लिए अपवाद को पकड़ने की कोशिश की है, लेकिन यह अभी भी लॉग है।
प्रश्न:
तो, मैं चुप उन लॉग लाइनों करते हैं? क्या यह भी संभव है?
प्रश्न पूछने के कारण के लिए कृपया नीचे टिप्पणी पढ़ें।
त्रुटि:
समय स्तंभ UNIQUE
बाधा है:
Error inserting Factor=2.0 Time=1325375465000 Extra=none
android.database.sqlite.SQLiteConstraintException: error code 19: constraint failed
at android.database.sqlite.SQLiteStatement.native_execute(Native Method)
at android.database.sqlite.SQLiteStatement.execute(SQLiteStatement.java:55)
at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1549)
at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1410)
at mypackage.myapp.provider.DataProvider.bulkInsert(DataProvider.java:353)
at android.content.ContentProvider$Transport.bulkInsert(ContentProvider.java:179)
at android.content.ContentResolver.bulkInsert(ContentResolver.java:646)
at mypackage.myapp.service.MyService.onHandleIntent(MyService.java:96)
at android.app.IntentService$ServiceHandler.handleMessage(IntentService.java:59)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.os.HandlerThread.run(HandlerThread.java:60)
मैं महसूस कर रहा हूँ यह सब का मतलब है कि मैं क्या करने की कोशिश कर रहा हूँ एक अद्वितीय बाधा पर एक डुप्लिकेट डालने से उबरने के लिए एक आलसी तरीका है, इसलिए "unpolished" लॉग में लग रहा है। मैं शायद शुरू करने के लिए डुप्लीकेट प्रविष्टियों (और आवेषण बुलावा) जो भी बना रहा है बेहतर सुधार कर रहा हूँ। मैं सब चिकनीपन के लिए हूँ। लेकिन यह सवाल उठाता है (मेरे लिए): क्यों हम बाध्यता जांचकर्ता को सुरक्षित रूप से "ऑफ़लोड" नहीं कर सकते हैं और इसे चुपचाप लॉग-इन करने में विफल रहते हैं? बस अगर हम चाहते हैं ... शायद हम डुप्लिकेट की उम्मीद करते हैं ... इसलिए चिंता करने की कोई बात नहीं है। शायद हमारे डेटा स्रोत, हमारे नियंत्रण के बाहर से शुरू करने के लिए दोषपूर्ण है ... – davidcesarino
उत्तर देने के बाद टिप्पणी: जैसा कि मैंने कहा था, मैं इस सवाल के प्रयोजनों के लिए उद्देश्य पर आलसी था, क्योंकि मैं चेक को कोड न करने की कोशिश कर रहा था और इसे 1) सुरक्षा (समरूपता), 2) दक्षता के बारे में सोचने के लिए छोड़ दें (2) दक्षता (उस पर मुझसे बेहतर/तेज है?) और 3) व्यावहारिक रूप से (कम कोड)। हालांकि, कुछ चीजें मेरे दिमाग (सम्मिलित पंक्ति गणना) पकड़ी गईं, इसलिए मैंने बाधाओं को बाधाओं के अलावा खुद को जांच लिया। वैसे भी, मैं (1) के बारे में अपने कोड से बहुत संतुष्ट हो गया। याद रखें कि इस सवाल को पढ़ते समय। – davidcesarino
यदि आप android.util का उपयोग नहीं कर रहे हैं। अपने आप को लॉग इन करें, तो आप उपयोगकर्ता को त्रुटियों को लॉगिंग के बारे में क्यों चिंतित हैं? –