如何使CachedRowSetImpl只读

时间:2013-12-09 09:02:55

标签: java jdbc

我将执行查询并使用 com.sun.rowset.CachedRowSetImpl 将结果返回给用户(不在我的控制范围内)。我想确保他们不会对此对象执行任何更新操作,这可以在数据库中进行更改。 一种方法可能是:

  1. 扩展CachedRowSetImpl并覆盖setReadOnly()方法,以便任何用户都不能将其设置为false。
  2. 这还够吗?或者还有其他方法可以使用哪些用户仍可以更新数据库?我是否还应该重写clone()方法?

    由于

2 个答案:

答案 0 :(得分:1)

我没有看到覆盖clone()的理由,但确保不会发生更新的最简单方法似乎是使用ResultSet.CONCUR_READ_ONLY

Javadoc看,在这种情况下,所有mutators都会抛出一个SQLException。

因此,要创建只读缓存行集,以下内容就足够了:

CachedRowSet rowSetImpl = new CachedRowSetImpl();
rowSetImpl.setConcurrency(ResultSet.CONCUR_READ_ONLY);
rowSetImpl.setCommand("Select * from foo");
rowSetImpl.execute();

答案 1 :(得分:1)

com.sun下的

类供内部使用,它们提供API的参考实现,您不需要直接访问它们。

最好避免将代码与com.sun中的类相关联,而是针对javax.java个包进行编码

此外,com.sun包中的类可以在任何版本的Java中更改或删除。