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;
}

正确的应该按顺序来进行:

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;
}

jdbc关闭连接顺序的更多相关文章

  1. JDBC 关闭数据库连接与自动提交【转】

    // Jdbc关闭数据库连接时,会隐含一个提交事务的操作 private final static String DB_DRIVER = "oracle.jdbc.driver.Oracle ...

  2. 测试 jdbc 中连接关闭的时机

    测试 jdbc 中连接关闭的时机 写一段程序,测试 jdbc 连接的关闭情况 /** * 测试 jdbc 连接的关闭情况 */ public static void testOpenCon(){ // ...

  3. Oracle JDBC 标准连接实例

    Oracle JDBC 标准连接实例 // 创建一个数据库连接 Connection con = null; // 创建预编译语句对象,一般用PreparedStatement不用Statement ...

  4. TCP的三次握手(建立连接)和四次挥手(关闭连接)

    参照: http://course.ccniit.com/CSTD/Linux/reference/files/018.PDF http://hi.baidu.com/raycomer/item/94 ...

  5. Java中通过JDBC远程连接Oracle数据库

    通过jdbc连接数据库,拢共分三步: 第一步:下载一个JDBC的驱动,然后把jar包扔到项目里并add to build path: 第二步:去本地oracle文件夹下找到“TNSNAMES.ORA” ...

  6. Websocket协议数据帧传输和关闭连接

    之前总结了关于Websocket协议的握手连接方式等其他细节,现在对socket连接建立后的数据帧传输和关闭细节总结. 一.数据帧格式 数据传输使用的是一系列数据帧,出于安全考虑和避免网络截获,客户端 ...

  7. Mybatis 打开连接池和关闭连接池性能对比

    1  创建数据库表 -- phpMyAdmin SQL Dump -- version 4.2.11 -- http://www.phpmyadmin.net -- -- Host: localhos ...

  8. JDBC数据源连接池的配置和使用实例

    个人学习参考所用,勿喷! 使用JDBC建立数据库连接的两种方式: 1.在代码中使用DriverManager获得数据库连接.这种方式效率低,并且其性能.可靠性和稳定性随着用户访问量得增加逐渐下降. 2 ...

  9. c3p0、dbcp、tomcat jdbc pool 连接池配置简介及常用数据库的driverClass和驱动包

    [-] DBCP连接池配置 dbcp jar包 c3p0连接池配置 c3p0 jar包 jdbc-pool连接池配置 jdbc-pool jar包 常用数据库的driverClass和jdbcUrl ...

随机推荐

  1. python 解积分方程

    引用:https://www.aliyun.com/jiaocheng/527786.html sympy求解极限.积分.微分.二元一次方程:http://www.gzhshoulu.wang/art ...

  2. 使用bison和yacc制作脚本语言(1)

    使用bison和yacc制作脚本语言(1) 环境: 环境 windows 10 Cygwin64 语言 C 工具 mingw bison flex 主要是使用bison和flex这两个软件,编译器无所 ...

  3. Qt——父对象、布局

    设置父对象两个好处:(1)加入析构树(2)和父对象一起显示 设置布局后,子控件自动被设置父对象 设置父对象两个好处:(1)加入析构树(2)和父对象一起显示

  4. redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketTimeoutException: connect time out

    redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketTimeoutException: connect ti ...

  5. JavaWeb——课程管理系统(1)jsp界面---18.11.29

    add.jsp <%@page import="com.jaovo.msg.Util.ValidateUtil"%><%@page import="co ...

  6. 北京Uber优步司机奖励政策(4月8日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  7. 使用AutoFac实现依赖注入(封装一个注册类)

    public class AutoFacBootStrapper { public static void CoreAutoFacInit() { var builder = new Containe ...

  8. JDBC事务机制

    package com.jdbc.test; import java.sql.*; /** * 数据库的引擎必须是innodb */ public class Demo02 { PreparedSta ...

  9. C# 中访问修饰符

    1.public 完全公开的,公共的 2. private 私有的,只能在当前类的内部访问, 不可修饰类 3.protected 受保护的,只能在当前类的内部以及其子类中访问,不能用来修饰类 4.in ...

  10. leetcode-全排列详解(回溯算法)

     全排列     给定一个没有重复数字的序列,返回其所有可能的全排列. 示例: 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2 ...