java - 异常 - java.sql.SQLException : Operation not allowed after ResultSet closed

标签 java mysql sqlexception

我遇到了一个异常

java.sql.SQLException: Before start of result set when calling getInt() method  

我的代码如下:::

public void setdateTOSource(){
   try{
        String q = "SELECT * FROM ipp.resource;";
        ResultSet result = DB_Access.getData(q);
        System.out.println("Size result set"+result.getFetchSize());
        while(result.next()){
            getIpSource().add(result.getString(1)); 
            System.out.println(result.getString(1));

        }
       System.out.println("source size "+getIpSource().size());      
   }
   catch(Exception e){
       System.out.println(e);
   }
}
public void insertTargetToDb(List<String> targetValue){

    try{
        Connection con = DB_Connect.getDataBaseConnection();
        Statement statement1 = con.createStatement();

        int val=0;
        String q1 = "SELECT MAX(area_id) as aa FROM ipp.area;";
        ResultSet resultset = statement1.executeQuery(q1); 
        if(resultset.next()){
            val = resultset.getInt(1);
         };           
        val++;

        String q2 = "INSERT INTO ipp.area VALUES("+val+",'"+getAreaName()+"',1);";
        Statement statement2 = con.createStatement();
        statement1.executeUpdate(q2);
        for( int y=0;y<targetValue.size();y++){

           System.out.println("FS");

           String ip=targetValue.get(y);
           System.out.println("ip" +ip);
           String q3 ="SELECT resource_id FROM ipp.resource r where ip_address like '"+ip+"%';";
           Statement statement3 = con.createStatement();
           ResultSet resultset3 =statement3.executeQuery(q3);

           System.out.println("FS1");
//           ResultSet result1 =DB_Access.getData(q3);
           System.out.println("FS2");
           System.out.println("result set"+resultset3.getFetchSize());
 //====================================================================              
while(resultset3.next()){
                setId(resultset.getInt(1));
          }           
          System.out.println("result :........."+resultset3.getInt("resource_id"));
          System.out.println("FS3");

           String q4 = "INSERT INTO ipp.used_resource VALUES("+val+","+getId()+");";
           Statement statement4= con.createStatement();
           statement4.executeUpdate(q4);
//           DB_Access.setData(q3);
           statement3.close();
           statement4.close();
//           resultset3.close();
        }
        resultset.close();
        statement1.close();
        statement2.close();
        con.close();
        addMessage("Area created Successfully");


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

异常出现在行之后

//========================== resource_id is an integer value

最佳答案

这一行

while(resultset3.next()){
                setId(resultset.getInt(1));
          } 

必须替换为?

while(resultset3.next()){
                setId(resultset3.getInt(1));
          } 

关于java - 异常 - java.sql.SQLException : Operation not allowed after ResultSet closed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14892175/

相关文章:

php - 合并2个MySQL数据库而不加倍数据

c# - RAISERROR―如何与SqlException区分?

java - SQLiteJDBC 和 PreparedStatement 使用 pragma table_info

java - 奇怪的 "JSONObject not found"错误

java - 两个 vector 的点积作为 float ?

java - Xerces2 XML 解析器和 Xalan XSLT 处理器——状态和替换?

java - 为什么在 Android 上使用 db.exec() 时不需要捕获 SQLExecption?

java - 使用 java 流将两个相同大小(和不同类型)的列表组合成域对象列表

php - 创建 PHP 多用户登录

php - 统计php和mysql中的现有记录