如何绕过ResultSet的初始化?

时间:2017-08-02 16:15:10

标签: java sql resultset

所以这是我的代码的一部分:

            try {             
                for (int i = 0; i < n; i++){
                    ResultSet res;                  
                    res = bdd.requete(sql);
                    doSomethingWithRes()
                }
            }
            catch (Exception e) {
                e.printStackTrace();
            }

我想在这个块的末尾关闭resultSet(以节省资源),但是如果我添加res.cose(),java会告诉我res可能没有被初始化(对于n =这是真的) 0)。有没有办法在不进行查询的情况下初始化resultSet?

我也试过

            try {             
                for (int i = 0; i < n; i++){
                    ResultSet res;                  
                    res = bdd.requete(sql);
                    doSomethingWithRes()
                }
            }
            catch (Exception e) {
                e.printStackTrace();
            }
            if (n>=1)
                res.close()

但是编译器不接受它,即使它可以工作。有没有办法强制编译器接受这个?

1 个答案:

答案 0 :(得分:2)

您必须增加ResultSet实例的范围;唯一的问题是你有多个,你应该关闭所有这些。我建议try-with-resources喜欢

try {             
    for (int i = 0; i < n; i++){
        try (ResultSet res = bdd.requete(sql)) {
            doSomethingWithRes();
        }
    }
}
catch (Exception e) {
    e.printStackTrace();
}