关闭 ResultSet 和 Statement 资源(datastax,无 close() 方法)

Close ResultSet and Statement resources (datastax, no close() method)

你好世界!

我在尝试关闭一些 datastax 资源(Statement、ResultSet)时遇到了麻烦。 Sonar 在我使用完这些资源后大喊我关闭它们。

(有关信息,在我使用此 myMethod() 后,我调用了 System.exit(0))无论如何,我想根据 Sonar

session.close() 是不够的,因为它似乎让 Statement 和 ResultSet.

/!\ ResultSet 和 Statement 来自 com.datastax.com.driver 并且它们不存在这些 close() 方法。 (不同于 java.sql)

我认为 session.getCluster.close() 可以,但我不想关闭集群。

正确关闭这些资源的正确方法是什么?

import com.datastax.driver.core.ResultSet;
import com.datastax.driver.core.Row;
import com.datastax.driver.core.Session;
import com.datastax.driver.core.Statement;
public void myMethod() {

    Statement statement = session.prepare("select * from .....").bind();
    ResultSet rs = session.execute(statement);

    // doSomethingWithThisResultSet() ...

    session.close();
}

在此先感谢您的帮助!

ResultSet 不是 "linked" 连接或任何其他需要关闭的资源。它由一个数组支持。参见:https://github.com/datastax/java-driver/blob/2.1/driver-core/src/main/java/com/datastax/driver/core/ArrayBackedResultSet.java

学分:https://groups.google.com/a/lists.datastax.com/forum/#!topic/java-driver-user/yjDP1xeYyYM

Statement只包含Statement ID,所以你不需要关闭它。