无法将Statement声明为实例变量

时间:2018-01-04 11:21:29

标签: java ojdbc

我似乎无法将以下内容声明为实例变量。

   public Statement stmt = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);

如果在方法/测试方法中声明,那么它可以正常工作。

“默认构造函数无法处理由隐式超级构造函数抛出的异常类型SQLException。必须定义一个显式构造函数”是抛出的错误,我也尝试在另一个类中声明它并从那里检索它。

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:2)

不是声明失败 - 它是尝试使用可以抛出已检查异常的表达式初始化变量。

您应该声明该字段,然后在构造函数中初始化它。该构造函数必须声明它抛出SQLException(或捕获异常本身)。

作为旁注,我强烈建议避开公共领域。

例如:

public class Foo {
    private final Statement statement;

    public Foo(Connection connection) throws SQLException {
        statement = connection.createStatement(...);
    }
}