`
Javaloverlover
  • 浏览: 343272 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

jdbc关闭连接顺序

    博客分类:
  • java
阅读更多
jdbc连接数据库时,先获取connection,再通过statement进行操作,将结果集放在resultset中,不过在关闭数据库的时候要小心,要跟前面的操作反着来,不然就会出现异常。如果直接关闭connection的话,就是说将其他也关闭了,再对其他的如statement进行操作就会出现:操作不允许在关闭以后进行的异常。
try {
			rs = stmt.executeQuery(sql);
		} catch (SQLException e) {
			System.out.println("execute query in findUserByEmail failed");
			e.printStackTrace();
		} finally {
			stmt.close();
			conn.close();
		}
		if (rs.next()) {
			User user = new User();
			user.setUserId(rs.getLong(1));
			user.setName(rs.getString(2));
			user.setEmail(rs.getString(3));
			user.setPassword(rs.getString(4));
			rs.close();
			return user;
		} else {
			rs.close();
			return null;
		}

像这样就会有异常发生,Operation not allowed after ResultSet closed

正确的应该按顺序来进行:
try {
			rs = stmt.executeQuery(sql);
		} catch (SQLException e) {
			System.out.println("execute query in findUserByEmail failed");
			e.printStackTrace();
		}
		
		if (rs.next()) {
			User user = new User();
			user.setUserId(rs.getLong(1));
			user.setName(rs.getString(2));
			user.setEmail(rs.getString(3));
			user.setPassword(rs.getString(4));
			rs.close();
			stmt.close();
			conn.close();
			return user;
		} else {
			rs.close();
			stmt.close();
			conn.close();
			return null;
		}

分享到:
评论
1 楼 wan368500 2012-05-08  
不错,今天面试的时候问到了

相关推荐

    bonecp连接池

    在用C3P0数据连接池的时候,一旦并发上来就坑不住了,因为C3P0存在BUG,c3p0在从连接池中获取和返回连接的时候,采用了异步的处理方式,使用一个线程池来异步的 把返回关闭了(没有真正关闭)的连接放入连接池中。...

    mysql-connector-java-5.1.46-bin

    一.jdbc访问数据库步骤 1.载入驱动 将jar包加入工程,Class.forname(""); 2.建立连接 使用connection对象的getConnection方法   url(jdbc:oracle:thin:@...6.关闭连接 按照 ResultSet ,Statement,Connection顺序来关闭

    通用工具类

    2.JDBC工具类,提供数据库连接池,结果集映射成对象功能 3.常用加密算法工具类,包括MD5、SHA、DES、HMAC、Base64等 4.RSA加解密,RSA签名、签名验证类 5.文件处理工具类,实现文件的复制、移动、查找、追加内容等。...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例055 反转数组中元素的顺序 68 3.4 常用集合的使用 69 实例056 用动态数组保存学生姓名 69 实例057 用List集合传递学生信息 70 实例058 用TreeSet生成不重复自动排序 随机数组 71 实例059 Map映射集合实现省市级...

    Spring.3.x企业应用开发实战(完整版).part2

    10.7.2 Spring JDBC数据连接泄漏 10.7.3 通过DataSourceUtils获取数据连接 10.7.4 通过DataSourceUtils获取数据连接 10.7.5 JdbcTemplate如何做到对连接泄漏的免疫 10.7.6 使用TransactionAwareDataSourceProxy 10.7...

    Spring3.x企业应用开发实战(完整版) part1

    10.7.2 Spring JDBC数据连接泄漏 10.7.3 通过DataSourceUtils获取数据连接 10.7.4 通过DataSourceUtils获取数据连接 10.7.5 JdbcTemplate如何做到对连接泄漏的免疫 10.7.6 使用TransactionAwareDataSourceProxy 10.7...

    java面试题

    答:JDBC数据库连接,是一种用于执行SQL语句的Java API,可以为多种关系型数据库提供统一访问。 什么情况下不建议使用Hibernate? 答:当数据量大,并且表关系复杂的时候不建议使用。 sleep()和wait()有什么区别? ...

    Java开发技术大全 电子版

    14.4.6响应窗口关闭事件处理示例454 14.4.7事件监听器接口和适配器类456 14.4.8作为参数的事件类456 14.4.9处理多个事件的例子463 14.5Swing组件的特性467 14.5.1Swing组件的优势467 14.5.2Swing组件的体系...

    MYSQL中文手册

    3.1. 连接与断开服务器 3.2. 输入查询 3.3. 创建并使用数据库 3.3.1. 创建并选择数据库 3.3.2. 创建表 3.3.3. 将数据装入表中 3.3.4. 从表检索信息 3.4. 获得数据库和表的信息 3.5. 在批处理模式下使用mysql...

    mysql官方中文参考手册

    3.1. 连接与断开服务器 3.2. 输入查询 3.3. 创建并使用数据库 3.3.1. 创建并选择数据库 3.3.2. 创建表 3.3.3. 将数据装入表中 3.3.4. 从表检索信息 3.4. 获得数据库和表的信息 3.5. 在批处理模式下使用mysql 3.6. ...

    MySQL 5.1参考手册中文版

    3.1. 连接与断开服务器 3.2. 输入查询 3.3. 创建并使用数据库 3.3.1. 创建并选择数据库 3.3.2. 创建表 3.3.3. 将数据装入表中 3.3.4. 从表检索信息 3.4. 获得数据库和表的信息 3.5. 在批处理模式下使用mysql ...

    MySQL 5.1参考手册

    3.1. 连接与断开服务器 3.2. 输入查询 3.3. 创建并使用数据库 3.3.1. 创建并选择数据库 3.3.2. 创建表 3.3.3. 将数据装入表中 3.3.4. 从表检索信息 3.4. 获得数据库和表的信息 3.5. 在批处理模式下使用mysql 3.6. ...

    JAVA程序开发大全---上半部分

    7.2.4 关闭数据库连接 108 7.2.5 浏览数据库结构 109 7.2.6 编辑和执行SQL语句 110 7.2.7 生成实体关系图 111 7.2.8 编辑和清除数据表中的数据 112 7.2.9 创建和删除数据表 112 7.2.10 创建和删除外键 113 7.2.11 ...

    Spring面试题

    异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。Spring DAO 的面向 JDBC 的异常遵从通用的 DAO 异常层次结构。 ☆ Spring ORM:Spring 框架插入了若干个 ORM 框架,...

    MySQL5.1参考手册官方简体中文版

    3.1. 连接与断开服务器 3.2. 输入查询 3.3. 创建并使用数据库 3.3.1. 创建并选择数据库 3.3.2. 创建表 3.3.3. 将数据装入表中 3.3.4. 从表检索信息 3.4. 获得数据库和表的信息 3.5. 在批处理模式下使用mysql 3.6. ...

Global site tag (gtag.js) - Google Analytics