如何在android sqlite中获取有关该列的信息导致外键约束?

Bob*_*obs 10 sqlite android constraints foreign-keys

我想知道是否有可能获得有关SQLiteConstraintException: foreign key constraint异常的信息.

我需要知道哪个导致违反外键约束.

有没有办法从异常中获取这些信息?

如果我能得到该约束的名称也可能是好的.

USK*_*ity 1

没有直接的方法可以从 SQLiteConstraintException 中查找违反外键约束的列名:外键约束异常。

但是您可以找到引发 SQLiteConstraintException: 外键约束异常的操作(删除、插入、创建等)名称。在以下日志中

 04-27 11:15:27.152: E/AndroidRuntime(22031): FATAL EXCEPTION: main
    04-27 11:15:27.152: E/AndroidRuntime(22031): android.database.sqlite.SQLiteConstraintException:           
    foreign key constraint failed (code 19)
    04-27 11:15:27.152: E/AndroidRuntime(22031):    at android.database.sqlite.SQLiteConnection.nativeExecuteForChangedRowCount(Native Method)
    04-27 11:15:27.152: E/AndroidRuntime(22031):    at android.database.sqlite.SQLiteConnection.executeForChangedRowCount(SQLiteConnection.java:727)
    04-27 11:15:27.152: E/AndroidRuntime(22031):    at android.database.sqlite.SQLiteSession.executeForChangedRowCount(SQLiteSession.java:754)
    04-27 11:15:27.152: E/AndroidRuntime(22031):    at android.database.sqlite.SQLiteStatement.executeUpdateDelete(SQLiteStatement.java:64)
    04-27 11:15:27.152: E/AndroidRuntime(22031):    at android.database.sqlite.SQLiteDatabase.delete(SQLiteDatabase.java:1494)
    04-27 11:15:27.152: E/AndroidRuntime(22031):    at it.jackpot21.personalmoney.DbAdapter.SQLdelete(DbAdapter.java:89)
    04-27 11:15:27.152: E/AndroidRuntime(22031):    at it.jackpot21.personalmoney.PersoneActivity$5.onClick(PersoneActivity.java:215)
Run Code Online (Sandbox Code Playgroud)

在上面的日志中

04-27 11:15:27.152:E / AndroidRuntime(22031):在android.database.sqlite.SQLiteDatabase.delete(SQLiteDatabase.java:1494)

这告诉我们删除操作会引发异常。然后,您可以找到代码中的哪一行引发此异常,并手动检查您的查询和列。