gpt4 book ai didi

java - Connection 对象可以在构造函数之外与 JDBC RowSet 实例一起使用吗?

转载 作者:搜寻专家 更新时间:2023-10-30 22:00:40 26 4
gpt4 key购买 nike

我知道可以使用传递给其构造函数的 Connection 对象来创建 JDBC RowSet 实例,例如:

Connection con = MyDAO.getConnection();
JdbcRowSet jrs = new JdbcRowSetImpl(con);

两个问题:

  • 每当我构建包含任何 JdbcRowSetImpl 使用的项目时,我的 Java SE 7 都会提示。它说 JdbcRowSetImpl 是供应商特定的实现,它可能会从 JDK 的 future 版本中删除。我觉得这很奇怪,因为 Java 教程继续在其 JDBC 部分中使用 JdbcRowSetImpl。 Oracle 真的打算从 JDK 中逐步淘汰工厂 RowSet 实现吗?如果没有,是否有办法停止警告消息?

这是警告之一。当我尝试在代码中使用 JdbcRowSet 构造函数或当我尝试导入包时会发生

C:\Users\Ribose\Documents\NetBeansProjects\CensusAssistant\src\org\kls\md\censusassistant\db\DB.java:170:
warning: JdbcRowSetImpl is internal proprietary API and may be removed in a future release
jrs = new JdbcRowSetImpl(con);

我正在使用 NetBeans IDE 7.3 进行构建。 RDBMS 是 HSQLDB 2.2.9。我有最新的 JDK SE 7。

  • 假设我已经有一个 JdbcRowSet 实例。虽然它没有连接,但我已经有一个 Connection 对象,但无法访问身份验证凭据,即我有该对象,但不需要 user_id 或密码来建立新的连接。

我能否将现有的 Connection 对象与现有的 JdbcRowSet 实例一起使用?我唯一发现的是 JdbcRowSetImpl 的构造函数可以采用 Connection 对象,但我想使用 Connection 而不必构造新的 RowSet 对象。这可能吗?

最佳答案

com.sun.rowset.JdbcRowSetImpl 类是 JDBC 接口(interface)的特定于 Sun 的实现,在不存在其他提供程序实现的情况下用作默认值。该类实际上自 JDK 1.2 以来就已经存在,因此您可以肯定地说它将继续存在,但这不是保证。这通常是所有 com.sun.* 包的情况 - 它们代表不应直接引用或实例化的内部实现。

Is it a bad practice to use Sun's proprietary Java classes?

话虽如此,与其他动态库 [SAX、DOM、JAXB 等] 不同,在不创建提供者特定实例的情况下,没有真正好的方法来实例化 JDBC 行集,直到 Java 7,您现在可以在其中使用工厂来创建一个特定于提供者的实例,而无需在您的代码中进行显式绑定(bind):

final JDBCRowSet rowSet = RowSetProvider.newFactory().createJdbcRowSet();

此代码扫描类路径以寻找合适的提供者,并首先实例化一个 RowSetFactory,然后是一个 JDBCRowSet,使用找到的提供者类(请注意,如果没有找到其他提供者,它将回退到默认的 Sun 实现)。从 Java 7 开始,这是创建 JDBC 行集的首选方式。

我能否将现有的 Connection 对象与现有的 JdbcRowSet 实例一起使用?

不是没有避免 internal proprietary API message no.正如我所说,JDBCRowSetImpl 类很可能会继续存在。事实上,Java 7 文档几乎暗示了同样多的内容:

The reference implementation of the JdbcRowSet interface, JdbcRowSetImpl, provides an implementation of the default constructor. A new instance is initialized with default values, which can be set with new values as needed

因此,如果您愿意忽略编译器警告,则可以使用默认实现来创建具有现有连接的行集。

关于java - Connection 对象可以在构造函数之外与 JDBC RowSet 实例一起使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15869137/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com