【问题标题】:JDBC 4.2 Interfaces DriverAction and SQLType - ExamplesJDBC 4.2 接口 DriverAction 和 SQLType - 示例
【发布时间】:2023-04-03 00:02:01
【问题描述】:

我很难找到JDBC 4.2 新接口DriverActionSQLType 的使用示例。

谁能举个例子?

【问题讨论】:

    标签: java jdbc


    【解决方案1】:

    DriverAction

    DriverAction 仅与驱动程序实现相关,如果该驱动程序想要在驱动程序被取消注册时得到通知(例如,释放资源或执行其他清理操作),作为 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)" 使用getNamegetVendor) 方法,最后(也是类型安全的一种形式)防止用户在数据库品牌Y 中错误地使用数据库品牌X 的类型代码(或者至少:允许驱动程序检测到这种不正确的用法)。

    也就是说:我认为对于 JDBC 的大多数基本和常规用法,这个接口并没有增加太多。

    【讨论】:

    • 但是,SQLTypeJDBCType 不包含 Java 类型 ENUM。 Java类型ENUM在哪里可以找到?
    • @Jake JDBC没有定义这种类型,所以在java.sql.Typesjava.sql.JDBCType中不会出现。
    猜你喜欢
    • 1970-01-01
    • 2015-11-21
    • 2018-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-18
    • 2018-12-18
    相关资源
    最近更新 更多