有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何使CachedRowSetImpl只读

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

  1. 扩展CachedRowSetImpl并重写setReadOnly()方法,以便用户不能将其设置为false

这是否足够?或者,用户还可以使用其他方法更新数据库?我还应该重写clone()方法吗

谢谢


共 (2) 个答案

  1. # 1 楼答案

    我看不出重写clone()的理由,但确保不发生更新的最简单方法似乎是使用ResultSet.CONCUR_READ_ONLY

    正如您从Javadoc中看到的,在这种情况下,所有的变种都会抛出一个SQLException

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

    CachedRowSet rowSetImpl = new CachedRowSetImpl();
    rowSetImpl.setConcurrency(ResultSet.CONCUR_READ_ONLY);
    rowSetImpl.setCommand("Select * from foo");
    rowSetImpl.execute();
    
  2. # 2 楼答案

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

    最好避免将代码耦合到com.sun中的类,而是针对javax.java包编写代码

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