sco*_*ttb 1 java database connection jdbc
我知道可以使用传递给其构造函数的 Connection 对象创建 JDBC RowSet 实例,例如:
Connection con = MyDAO.getConnection();
JdbcRowSet jrs = new JdbcRowSetImpl(con);
Run Code Online (Sandbox Code Playgroud)
两个问题:
这是警告之一。当我尝试在代码中使用 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);
Run Code Online (Sandbox Code Playgroud)
我正在使用 NetBeans IDE 7.3 进行构建。RDBMS 是 HSQLDB 2.2.9。我有最新的 JDK SE 7。
我可以将现有的 Connection 对象与现有的 JdbcRowSet 实例一起使用吗?我发现的唯一一件事是 JdbcRowSetImpl 的构造函数可以接受一个 Connection 对象,但我想使用 Connection 而不必构造一个新的 RowSet 对象。这可能吗?
该类com.sun.rowset.JdbcRowSetImpl是 JDBC 接口的特定于 Sun 的实现,并且在不存在其他提供程序实现的情况下用作默认值。这个类实际上从 JDK 1.2 开始就已经存在,所以你可以肯定地说它会继续存在,但不能保证。com.sun.*通常所有包都是这种情况——它们代表不应直接引用或实例化的内部实现。
话虽如此,与其他动态库 [SAX、DOM、JAXB 等] 不同,在 Java 7 之前,没有真正好的方法可以在不创建提供者特定实例的情况下实例化 JDBC 行集,现在您可以使用工厂来创建提供者特定实例,在您的代码中没有显式绑定:
final JDBCRowSet rowSet = RowSetProvider.newFactory().createJdbcRowSet();
Run Code Online (Sandbox Code Playgroud)
此代码扫描适当提供程序的类路径,并使用找到的提供程序类首先实例化 RowSetFactory,然后实例化 JDBCRowSet(请注意,如果找不到其他提供程序,它将回退到默认的 Sun 实现)。这是从 Java 7 开始创建 JDBC 行集的首选方式。
我可以将现有的 Connection 对象与现有的 JdbcRowSet 实例一起使用吗?
并非没有避免internal proprietary API消息 no。正如我所说,JDBCRowSetImpl 类在所有可能性中都会继续存在。事实上,Java 7 文档几乎提到了以下内容:
JdbcRowSet 接口的参考实现 JdbcRowSetImpl 提供了默认构造函数的实现。使用默认值初始化新实例,可以根据需要设置新值
因此,如果您愿意忽略编译器警告,则可以使用默认实现来创建具有现有连接的行集。
| 归档时间: |
|
| 查看次数: |
1214 次 |
| 最近记录: |