【发布时间】:2023-04-03 00:02:01
【问题描述】:
我很难找到JDBC 4.2 新接口DriverAction 和SQLType 的使用示例。
谁能举个例子?
【问题讨论】:
我很难找到JDBC 4.2 新接口DriverAction 和SQLType 的使用示例。
谁能举个例子?
【问题讨论】:
DriverActionDriverAction 仅与驱动程序实现相关,如果该驱动程序想要在驱动程序被取消注册时得到通知(例如,释放资源或执行其他清理操作),作为 JDBC 的最终用户,您无需去做吧。
它的目的是,如文档中所述:
当
Driver想要由DriverManager通知时必须实现的接口。
DriverAction实现不打算由应用程序直接使用。 JDBC 驱动程序可以选择在私有类中创建其DriverAction实现以避免直接调用它。
(强调我的)
SQLType要了解SQLType,您首先需要查看枚举JDBCType。这是一个枚举,它声明与java.sql.Types 中相同的 JDBC 类型,但随后作为枚举对象。这个枚举实现了SQLType。添加接口SQLType 允许驱动程序实现为未在 JDBC 中定义的驱动程序或数据库特定类型添加类似的类型安全枚举。
它在PreparedStatement.setObject(int, Object, SQLType) 中用作PreparedStatement.setObject(int, Object, int) 的等价物。
您可能会问这增加了什么?首先,它对类型安全性更好。过去,驱动程序为可能与较新 JDBC 版本中添加的类型代码冲突的数据库特定类型分配了类似 java.sql.Types 的整数。其次,当您提供不受支持的类型时,它可能允许更具可读性的诊断(例如,而不是 "Unsupported type -1233" 它可以显示 "Unsupported type XYZ (vendor : MyXYZDB)" 使用getName 和getVendor) 方法,最后(也是类型安全的一种形式)防止用户在数据库品牌Y 中错误地使用数据库品牌X 的类型代码(或者至少:允许驱动程序检测到这种不正确的用法)。
也就是说:我认为对于 JDBC 的大多数基本和常规用法,这个接口并没有增加太多。
【讨论】:
SQLType 和 JDBCType 不包含 Java 类型 ENUM。 Java类型ENUM在哪里可以找到?
java.sql.Types和java.sql.JDBCType中不会出现。