gpt4 book ai didi

android - SQLiteConstraintException 不要进入 catch

转载 作者:IT王子 更新时间:2023-10-29 06:20:07 26 4
gpt4 key购买 nike

当我运行该代码时,db.insert 中有一个异常:

08-29 15:40:17.519: E/SQLiteDatabase(3599): android.database.sqlite.SQLiteConstraintException: column date is not unique (code 19)

这很正常,因为我已经将该值作为键。因此,在这种情况下,我捕获了 SQLiteConstraintException,但在运行代码时我从未进入该捕获。

我做错了什么?

           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)

最佳答案

改用 db.insertOrThrow()

关于android - SQLiteConstraintException 不要进入 catch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12178633/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com