08-29 15:40:17.519: E/sqliteDatabase(3599): androID.database.sqlite.sqliteConstraintException: column date is not unique (code 19)
这是正常的,因为我已经把这个价值作为一个关键.
所以在这种情况下,我做了一个sqliteConstraintException的捕获,但是当我运行代码时,我从来没有在catch中.
我究竟做错了什么?
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=108-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.access0(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)解决方法 请改用db.insertOrThrow(). 总结
以上是内存溢出为你收集整理的android – SQLiteConstraintException不要内部catch全部内容,希望文章能够帮你解决android – SQLiteConstraintException不要内部catch所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)