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

Fun*_*hor 4 java datastax-java-driver datastax sonarqube

你好,世界 !

我在尝试关闭一些数据共享资源(Statement,ResultSet)时遇到了麻烦.使用后,Sonar正在大声喊叫我关闭这些资源.

(关于我使用myMethod()之后的信息,我调用了一个System.exit(0))Bu无论如何,我想根据声纳来做

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();
}
Run Code Online (Sandbox Code Playgroud)

在此先感谢您的帮助 !

Vov*_*vka 9

ResultSet不会"链接"到需要关闭的连接或任何其他资源.它由一个数组支持.请参阅: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仅包含语句ID,因此您也不需要关闭它.

  • 编辑:抓住那个.它似乎做分页.我的问题是:如果我执行查询然后从不对结果集做任何事情,那么结果集何时"过期"(由cassandra服务器或客户端). (3认同)