我将执行查询并使用 com.sun.rowset.CachedRowSetImpl 将结果返回给用户(不在我的控制范围内)。我想确保他们不会对此对象执行任何更新操作,这可以在数据库中进行更改。 一种方法可能是:
这还够吗?或者还有其他方法可以使用哪些用户仍可以更新数据库?我是否还应该重写clone()方法?
由于
答案 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中更改或删除。