2012-08-29 10 views
9

अंदर जाना नहीं है। तो उस मामले में मैं SQLiteConstraintException का पकड़ लेता हूं लेकिन जब मैं कोड चलाता हूं तो मैं पकड़ के अंदर कभी नहीं मिलता।SQLiteConstraintException जब मैं मैं db.insert अंदर एक अपवाद है कि कोड को चलाने पकड़

मैं क्या गलत कर रहा हूं?

  try { 
       db.insert(TABLE_STATISTICS, null, values); 
      } catch (SQLiteConstraintException e) { 
       Log.d("entered", "entered the exception"); 
       ContentValues valuesUp = new ContentValues(); 
       valuesUp.put((isMT ? KEY_MT : KEY_MO), change); 
       db.update(TABLE_STATISTICS, valuesUp, KEY_DATE + "=?", 
         new String[] { message_date }); 
      } 

धन्यवाद।

पूरे लॉग:

08-29 15:55:55.870: E/SQLiteDatabase(3828): Error inserting MO=0 date=2012-08-08 MT=1 
08-29 15:55:55.870: E/SQLiteDatabase(3828): android.database.sqlite.SQLiteConstraintException: column date is not unique (code 19) 
08-29 15:55:55.870: E/SQLiteDatabase(3828):  at android.database.sqlite.SQLiteConnection.nativeExecuteForLastInsertedRowId(Native Method) 
08-29 15:55:55.870: E/SQLiteDatabase(3828):  at android.database.sqlite.SQLiteConnection.executeForLastInsertedRowId(SQLiteConnection.java:775) 
08-29 15:55:55.870: E/SQLiteDatabase(3828):  at android.database.sqlite.SQLiteSession.executeForLastInsertedRowId(SQLiteSession.java:788) 
08-29 15:55:55.870: E/SQLiteDatabase(3828):  at android.database.sqlite.SQLiteStatement.executeInsert(SQLiteStatement.java:86) 
08-29 15:55:55.870: E/SQLiteDatabase(3828):  at android.database.sqlite.SQLiteDatabase.insertWithOnConflict(SQLiteDatabase.java:1469) 
08-29 15:55:55.870: E/SQLiteDatabase(3828):  at android.database.sqlite.SQLiteDatabase.insert(SQLiteDatabase.java:1339) 
08-29 15:55:55.870: E/SQLiteDatabase(3828):  at xx.xxx.xxx.xx.xxxx.StatisticsHolderDay.updateCounterNextStep(StatisticsHolderDay.java:124) 
08-29 15:55:55.870: E/SQLiteDatabase(3828):  at xx.xxx.xxx.xx.xxxx.StatisticsHolderDay.updateCounter(StatisticsHolderDay.java:102) 
08-29 15:55:55.870: E/SQLiteDatabase(3828):  at xx.xxx.xxx.xx.xxxx.LastMonthActivity.onStart(LastMonthActivity.java:146) 
08-29 15:55:55.870: E/SQLiteDatabase(3828):  at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1163) 
08-29 15:55:55.870: E/SQLiteDatabase(3828):  at android.app.Activity.performStart(Activity.java:5018) 
08-29 15:55:55.870: E/SQLiteDatabase(3828):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2032) 
08-29 15:55:55.870: E/SQLiteDatabase(3828):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) 
08-29 15:55:55.870: E/SQLiteDatabase(3828):  at android.app.ActivityThread.access$600(ActivityThread.java:130) 
08-29 15:55:55.870: E/SQLiteDatabase(3828):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) 
08-29 15:55:55.870: E/SQLiteDatabase(3828):  at android.os.Handler.dispatchMessage(Handler.java:99) 
08-29 15:55:55.870: E/SQLiteDatabase(3828):  at android.os.Looper.loop(Looper.java:137) 
08-29 15:55:55.870: E/SQLiteDatabase(3828):  at android.app.ActivityThread.main(ActivityThread.java:4745) 
08-29 15:55:55.870: E/SQLiteDatabase(3828):  at java.lang.reflect.Method.invokeNative(Native Method) 
08-29 15:55:55.870: E/SQLiteDatabase(3828):  at java.lang.reflect.Method.invoke(Method.java:511) 
08-29 15:55:55.870: E/SQLiteDatabase(3828):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
08-29 15:55:55.870: E/SQLiteDatabase(3828):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
08-29 15:55:55.870: E/SQLiteDatabase(3828):  at dalvik.system.NativeStart.main(Native Method) 
+0

क्या आप वाकई इस प्रविष्टि से त्रुटि चाहते हैं? कृपया पूरे लॉग पोस्ट करें। – iTurki

+0

@iturki पूरे लॉग के साथ मुख्य प्रश्न अद्यतन किया। सांख्यिकीहोल्डर Day.java:124 ऐसा है जहां मैं प्रश्न पर सम्मिलित करता हूं। – Mano

उत्तर

13

उपयोग db.insertOrThrow() बजाय।

+0

आपको बहुत बहुत धन्यवाद! – Mano

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