关键词:
ResultSet连续通过Statement赋值,会出现错误
错误提示:jdbc Operation not allowed after ResultSet closed
1 public Task[] getTaskInfo(String a_id){ 2 Task[] task = null; 3 Connection conn = null; 4 Statement stmt = null; 5 ResultSet rs1 = null; 6 ResultSet rs2 = null; 7 try{ 8 Class.forName("com.mysql.jdbc.Driver"); 9 conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/p_note","root","root"); 10 stmt = conn.createStatement(); 11 String sql = "select count(*) from tasks"; 12 String sql2 = "select * from tasks" ; 13 rs1 = stmt.executeQuery(sql); 14 rs2 = stmt.executeQuery(sql2); 15 int count = 0; 16 while(rs1.next()){ 17 count = rs1.getInt(1); 18 } 19 task = new Task[count]; 20 int i=0; 21 while(rs2.next()){ 22 task[i] = new Task(); 23 task[i].setA_id(a_id); 24 task[i].setT_id(rs2.getString("t_id")); 25 task[i].setExecuteTime("t_time"); 26 task[i].setExecuteSite(rs2.getString("t_site")); 27 task[i].setItemName(rs2.getString("t_items")); 28 task[i].setSetout(rs2.getString("t_setout")); 29 task[i].setT_createTime(rs2.getString("t_createTime")); 30 task[i].setT_stamp(rs2.getString("t_stamp")); 31 task[i].setT_stick(rs2.getString("t_stick")); 32 i++; 33 } 34 35 }catch(Exception ex){ 36 ex.printStackTrace(); 37 38 }finally{ 39 try{ 40 if(conn != null){ 41 conn.close(); 42 } 43 if(stmt != null){ 44 stmt.close(); 45 } 46 if(rs1 != null){ 47 rs1.close(); 48 } 49 if(rs2 != null){ 50 rs2.close(); 51 } 52 }catch(Exception ex){ 53 ex.printStackTrace(); 54 } 55 } 56 57 return task; 58 }
红色标记部分会出现错误
原因:数据库提供的方法中,当再次用相同的Statement对ResultSet赋值时,会有个判断 if(ReslutSet != null) {}.在这个方法里面,rs1会被关掉。所以就存在了以上的问题。jdbc Operation not allowed after ResultSet closed
jdbc学习笔记——statement和resultset
转自:http://www.cnblogs.com/ysw-go/ Statement执行更新操作Statement:Statement是Java执行数据库操作的一个重要方法,用于在已经建立数据库连接的基础上,向数据库发送要执行的SQL语句。Statement对象,用于执行不带参数的简单SQL语句... 查看详情
在java中connection、statement、resultset、preparedsta
在Java中Connection、Statement、ResultSet、PreparedStatement各是什么意思?Statement和PreparedStatement的区别是什么?两者各在什么情况下使用? Connection是建立与数据库的链接,Statement算是一个连接的实例,用来执行SQL语句,ResultSet是查... 查看详情
jdbc中的resultset
ResultSet:结果集。存放数据库中的数据,可以将它想象成一张数据表,通过Statement对象中的executeQuery()方法获得 importcom.mysql.jdbc.Statement;importjava.sql.Connection;importjava.sql.Driver;importjava.sql.ResultSet;importja 查看详情
在 Statement 和 ResultSet 上设置提取大小之间的区别
】在Statement和ResultSet上设置提取大小之间的区别【英文标题】:DifferencebetweensettingafetchsizeonStatementvsResultSet【发布时间】:2016-05-2315:03:43【问题描述】:在Statement和ResultSet上设置提取大小有什么区别?Oracle文档说,如果在Statement... 查看详情
何时关闭 JDBC 中的 Connection、Statement、PreparedStatement 和 ResultSet
】何时关闭JDBC中的Connection、Statement、PreparedStatement和ResultSet【英文标题】:WhentocloseConnection,Statement,PreparedStatementandResultSetinJDBC【发布时间】:2010-11-0513:57:25【问题描述】:关于JDBC编码的几个问题:对于单个客户端应用程序,我... 查看详情
java示例代码_在while循环中正确处理Connection、ResultSet和Statement对象
java示例代码_在while循环中正确处理Connection、ResultSet和Statement对象 查看详情
深入浅出mybaits
...ection,打开Statement对象。通过Statement执行SQL,返回结果到ResultSet对象。使用ResultSet读取数据,然后通过代码转化为具体的POJO对象。释放数据库相 查看详情
jdbc数据库连接在方法中,而且要返回statement或resultset在方法里关闭连接会怎么样?要怎么处理?
如果要返回statement或者resultset就不能关闭连接,关了的话作为返回值被传出去的statement或者resultset被访问到的时候就会抛出异常。连接不关不会被有异常,但程序被多次执行后就有连接被占满,不能取得连接的问题出现。一般需... 查看详情
jdbcstatement
...ment对象之后才能执行SQL对象 Statement常用的方法:->ResultSetexecuteQuery()throwsSQLException:用于执行查询语句,并返回查询结果对应的ResultSet,该方法只能用 查看详情
ResultSet.insertRow() VS Statement.executeUpdate("INSERT INTO...")。哪个更好用?
】ResultSet.insertRow()VSStatement.executeUpdate("INSERTINTO...")。哪个更好用?【英文标题】:ResultSet.insertRow()VSStatement.executeUpdate("INSERTINTO...").Whichisbettertouse?【发布时间】:2012-02-1712:24:55【问题描述】:在使用Java 查看详情
简述jdbc中三种statement对象的作用
...在默认情况下,同一时间每个Statement对象在只能打开一个ResultSet对象。因此,如果读取一个ResultSet对象与读取另一个交叉,则这两个对象必须是由不同的Statement对象生成的。如果存在某个语句的打开的当前ResultSet对象,则Statement... 查看详情
javaweb_jdbc_resultset查询操作
JDBC基础_resultSet结果集1.概述以及注意事项(1).什么是ResultSet?ResultSet是对象以逻辑表格的形式封装了执行数据库操作的结果集,ResultSet接口由数据库厂商实现 (2).如何创建ResultSet通过调用Statement对象的excuteQuery()方法创建该对... 查看详情
statement.addbatch()/statement.executebatch()返回结果集?
...romt3"));statement.executeBatch();我怎么得到各个select返回的ResultSet?参考技术AexecuteBatch不能执行返回值是ResultSet结果集,只会返回执行结果int[] 查看详情
如何超时 java.sql.ResultSet
】如何超时java.sql.ResultSet【英文标题】:HowtoTimingoutjava.sql.ResultSet【发布时间】:2009-06-2319:29:51【问题描述】:PL/SQl光标由于某种原因被挂起,这使我的应用程序在尝试循环通过ResultSet时挂起。有没有办法处理这个问题,比如如... 查看详情
什么是statement
在默认情况下,同一时间每个Statement对象在只能打开一个ResultSet对象。因此,如果读取一个ResultSet对象与读取另一个交叉,则这两个对象必须是由不同的Statement对象生成的。如果存在某个语句的打开的当前ResultSet对象,则Statement... 查看详情
ResultSet to jTable = java.sql.SQLException: Prepared statement has been finalized
】ResultSettojTable=java.sql.SQLException:Preparedstatementhasbeenfinalized【英文标题】:ResultSettojTable=java.sql.SQLException:Thepreparedstatementhasbeenfinalized【发布时间】:2017-11-1617:06:46【问题描述】:***的朋友!我尝试在select语句中“返回”一个Resul 查看详情
statement的摘要
...常量指示调用getMoreResults时应该关闭以前一直打开的所有ResultSet对象。staticintCLOSE_CURRENT_RESULT该常量指示调用getMoreResults时应该关闭当前ResultSet对象。staticintEXECUTE_FAILED该常量指示在执行批量语句时发生错误。staticintKEEP_CURRENT_RESULT... 查看详情
java中如何获得resultset类型变量存到arraylist里面
解答:譬如用statement得到resultsetrs=statement.executeQuery("你的sql语句");将rs.getString("得到的字段")依次放入Map中(map.put())。之后用list.add(map)。就实现了。要点:主要掌握resultset以及arraylist的具体方法的用法。建议:... 查看详情