Resultset not open. Verify Autocommit is OFF. Apache Debry

巧了我就是萌 提交于 2019-12-04 03:53:37

The problem is that you have closed your query before reading your resultset. Closing the query, closes the resultset, hence why you get the "ResultSet not open" error. You should close the query right at the end, in a finally block:

ResultSet word;

Statement query=null;

String getData="SELECT THEWORD FROM MAINTAB";
try{
    System.out.println(dbconn.getAutoCommit());
    query = dbconn.createStatement();
    word = query.executeQuery(getData);


    dbconn.setAutoCommit(false);
    System.out.println(dbconn.getAutoCommit());

    for(;word.next();)
        System.out.println(word.getString(1));

}catch(Throwable e){
    System.out.println("Table fetch failed or result data failed");
} finally{
    if(query!=null) {
        try {
             query.close();
        }
        catch(SQLException ex) {
              System.out.println("Could not close query");
        }
   }
}

for me, it was the Connection object that got closed. so next time think about using your existing Connection object.

instead, I Use this everytime I make a new Query.

 private Connection getConnect() {
    try {
        return DriverManager.getConnection(Utils.getDatabaseConnection(), null);
    } catch (SQLException e) {
        e.printStackTrace();
        return null;
    }
}

and then do whatever with null check for ex.

getConnect().createStatement();

Faisal Mushtaq

You can do this by creating another statement variable initializing it with con.createStatement();

Statement stmt = con.createStatement();
Statement stmt2 = con.createStatement();
stmt.executeQuery(" your first query goes here ");
stmt2.executeQuery("your second query goes here");

Execute second query with second Statement variable. A solution for beginners.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!