SQL异常:ResultSet关闭后不允许进行操作。这是为什么?

时间:2019-07-11 07:50:27

标签: java mysql sql resultset sqlexception

我尝试从数据库中获取一条数据,突然出现错误:在ResultSet关闭后不允许进行该操作。

while(rs3.next()) {

为什么会这样?该代码似乎一切正常。这是我的代码:

public DatabaseConnectionClass() {

    idfield = new JTextField("");
    submit = new JButton("go");
    settings = new JButton("settings");
    auto = new JButton("auto");
    add(idfield);
    add(submit);
    add(settings);
    add(auto);
    setLayout(new GridLayout());

    try {

        Class.forName("com.mysql.cj.jdbc.Driver");
        con = DriverManager.getConnection("jdbc:mysql://localhost:3306/database1?useTimezone=true&serverTimezone=UTC", "root", "");
        st = con.createStatement();
        con2 = DriverManager.getConnection("jdbc:mysql://localhost:3306/values?useTimezone=true&serverTimezone=UTC", "root", "");
        st2 = con2.createStatement();


    } catch(Exception ex) {
        System.out.println(ex);



    }
    }

这是一种错误的方法,该方法会在按下其中一个按钮(称为自动)时激活:

 public void getAuto() throws Exception {

            for (int i = 0; i < 1000; i++) {

            String q1 = "SELECT * FROM payments LIMIT 1";
            try {
                rs3=st.executeQuery(q1);
                while(rs3.next()) {
                String ppmail = rs3.getString("mail");
                getData(ppmail);
                rs3.close();

                }} catch (SQLException e) {

                // TODO Auto-generated catch block
                e.printStackTrace();
                System.out.println(e);
                auto.setText("End of records");
            }


            }


}

1 个答案:

答案 0 :(得分:1)

close之后,您不能再使用@style/AppTheme.NoActionBar,请将ResultSet移至rs3.close();

finally
  

立即释放此ResultSet对象的数据库和JDBC资源