如何获取关于android sqlite中由列引起的外键约束的信息?
我想知道是否有可能获取有关如何获取关于android sqlite中由列引起的外键约束的信息?,android,sqlite,foreign-keys,constraints,Android,Sqlite,Foreign Keys,Constraints,我想知道是否有可能获取有关SQLiteConstraintException:foreign key constraint异常的信息 我需要知道哪个列违反了外键约束 有没有办法从异常获取这些信息 如果我能得到该约束的名称,也会很好 无法直接查找违反外键的列名 来自SQLiteConstraintException的约束:外键约束 例外 但您可以在下面的日志中找到引发SQLiteConstraintException:foreign key constraint exception的操作(删除、插
SQLiteConstraintException:foreign key constraint
异常的信息
我需要知道哪个列违反了外键约束
有没有办法从异常获取这些信息
如果我能得到该约束的名称,也会很好
无法直接查找违反外键的列名
来自SQLiteConstraintException的约束:外键约束
例外
但您可以在下面的日志中找到引发SQLiteConstraintException:foreign key constraint exception的操作(删除、插入、创建等)名称
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)
在上面的日志中
04-27 11:15:27.152:E/AndroidRuntime(22031):在
android.database.sqlite.SQLiteDatabase.delete(SQLiteDatabase.java:1494)
这告诉我们删除操作引发异常。然后,您可以找到代码中引发此异常的行,并手动检查查询和列。较新的SQLite版本将表名添加到错误消息中,但在这两种情况下,您都无法获得列名。我想您可以在以下问题中找到答案:
看看antoino发布的解决方案2。您可以将sql复制到sqlite浏览器,并尝试在那里复制错误,它会给您提供更多信息。您可以从Exception获取这些信息,但这不是我的解决方案。他的解决方案中没有有价值的数据。该解决方案提供了您需要的一切,以获取有关确切错误的更多信息。您可以打印堆栈跟踪转储,这应该足够了。是否可以推断catch子句中缺少的约束?数据转储可能有助于捕获。