4

我正在通过 JDBC 从 jsp 与 SQL Server 2005 进行交互(这是一个分配,不是真正的项目),并且我在我正在使用的数据库中创建了一个触发器。如果在执行此触发器时不满足某个条件,我会通过 raiserror() 引发错误。我希望此错误显示在通过 JDBC 调用 SQL Server 查询的实际页面上,但目前当我打印出 SQLException.getMessage() 的结果时,我只收到以下默认消息:

事务在触发器中结束。该批次已中止。

有谁知道如何提取我在触发代码中实际传递给 raiserror 的文本?我已经尝试过:

  • SQLException.getState()
  • SQLException.getNextException()
  • SQLException.getCause()
  • SQLException.toString()
4

2 回答 2

9

我想到了。这个问题与我在调用 raiserror() 时选择的严重性有关。我为此参数传递了 10,因为我看到了一个将 10 放在那里的示例,但是为了将错误文本传递给 SQLException,严重性必须为 11 或更高。更改严重性后,一切正常。如果其他人有类似的问题,我建议您尝试一下。此外,谷歌 JDBC 错误处理有用的文档(我会提交一个链接,但不允许新用户)。

于 2009-06-01T15:05:51.037 回答
0

您需要迭代使用 getNextException() 返回的所有异常

于 2009-06-01T05:27:58.960 回答