如何在OracleJDBC访问中加入Spring特性?
如何在OracleJDBC访问中加入Spring特性?
几种常见的 Oracle 数据库产生的错误码可以在 Oracle 数据库错误消息文档中找到(没有列出产品特有的 ORA 消息)。 Spring 框架既支持基于标准的 SQLState 又支持供应商特有的错误码。与自主开发的数据访问软件相比,该框架对供应商特有的错误码的支持利用了与特有数据库的更松散的耦合来实现。
Spring 框架引入了一个 XML 配置文件,利用它将在 JDBC 代码中经常遇到的某些供应商特有的错误与 Spring 支持的异常类连接起来。Spring 提供的 sql-error-codes。xml 配置文件目前包含了代码清单 4 中所示针对 Oracle 数据库的配置。
(在该文件中还涉及其他的数据库供应商,但并包含在此代码清单中。) 代码清单 4 900,903,904,917,936,942,17006 17003 17002 1,1400,1722,2291 54sql-error-codes。
xml 中的 value 元素的主体中的整数由逗号分隔,它们对应于前面所述的供应商特有的错误码的数字部分。在表 1 中列出了 "badSqlGrammarCodes" 类别中的许多数字码。17006 代码是一个 JDBC 驱动程序错误码,它指示“无效的列名”。
代码清单 4 中的 property 元素标记的 name 属性指示 Spring 框架使用哪种类型的异常来处理那些特定的错误码。例如,917 (ORA-00917) 错误将导致 Spring 框架抛出一个非强制的 BadSqlGrammarException。
因为该配置文件是 XML 格式的并且在代码的外部,因此可以很容易地将其他代码添加到该文件中,用于抛出最适合于特定供应商错误码的基于 Spring 的 JDBC 异常。 出于各种原因,您可能希望抛出与数据库的错误码对应的特定异常。例如,您可能希望选择处理 SQLException 正常抛出的情况,而不是处理所有的情况。
因为在许多情况下,在运行时您无法对代码作任何处理。通过为数据库开发人员创建一个更细粒化的异常层次结构,以及通过提供特定数据库错误和特定异常之间的一个松散耦合的连接,Spring 框架使您能够更轻松地处理那些容易处理的异常,而选择忽略不能合理处理的非强制异常 。
答:在利用 JDBC 访问 Oracle 对象的两种方式下(Struct 和 SQLData)都将使用抛出 SQLException 的方法来访问返回的类。代码清单...详情>>