https://www.2cto.com/database/201501/369246.html

Connection对象在执行close() 方法之后,并不是直接把Connection对象设置为null (Connection对象有一个方法, isClosed() 判断Connection是否被关闭,如果直接设置为null,再执行isClosed() 就会报空指针异常)

close()源码:

public void close() throws SQLException {
synchronized (getConnectionMutex()) {
if (this.connectionLifecycleInterceptors != null) {
new IterateBlock<Extension>(this.connectionLifecycleInterceptors.iterator()) {
@Override
void forEach(Extension each) throws SQLException {
((ConnectionLifecycleInterceptor) each).close();
}
}.doForAll();
} realClose(true, true, false, null);
}
}

测试代码:

DBUtil是自己写的一个工具类,有静态方法 ResultSet generalQuery(),静态属性conn, pst

public class Test {
public static void main(String[] args) {
String sql = "select * from member where mId = ? and mPwd = ?";
Object[] params = {"2015", "1233"};
ResultSet rs = DBUtil.generalQuery(sql, params);int cnt = 0;
try {
if(rs != null) {
rs.last();
cnt = rs.getRow();
}
if(rs != null) rs.close();
if(DBUtil.pst != null) DBUtil.pst.close();
if(DBUtil.conn != null) DBUtil.conn.close(); if(cnt != 0) {
System.out.println("查询成功!");
}else {
System.out.println("查询失败");
}
}catch (SQLException e) {
e.printStackTrace();
}
try {
System.out.println(DBUtil.conn); // com.mysql.jdbc.JDBC4Connection@619a5dff
System.out.println(DBUtil.pst); // java.sql.SQLException: No operations allowed after statement closed.
System.out.println(rs); //com.mysql.jdbc.JDBC42ResultSet@23ab930d System.out.println(DBUtil.conn.isClosed()); //true
System.out.println(DBUtil.pst.isClosed()); //true
System.out.println(rs.isClosed()); //true

} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

JDBC:Connection.close()的更多相关文章

  1. atitit.故障排除------有时会错误com.microsoft.sqlserver.jdbc.SQLServerException: Connection reset by peer: soc

    atitit.故障排除------有时会错误com.microsoft.sqlserver.jdbc.SQLServerException: Connection reset by peer: soc ...

  2. jdbc、Connection pool、jndi的理解和关系

    一.概念和理解: ①.jdbc:Java Data Base Connectivity,java数据库连接,最为传统的一种方式,直接连接操作数据库,需要连接时创建连接,使用结束时销毁连接. ②.Con ...

  3. JDBC:数据库连接技术

    JDBC :带它再爱你一次 (一) JDBC 入门 (1) 概述 Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问 ...

  4. JDBC:加载数据库驱动、连接数据库(详细讲解)

    加载数据库驱动: 1)由于Java是一个纯面向对象语言,任何事物在其中都必须抽象成类或者类对象,数据库也不例外,JDBC同样也把数据库抽象成面向对象的结构: 2)JDBC将整个数据库驱动器在底层抽象成 ...

  5. JDBC driver connection string大全

    Database   / data source URL format /   driver name Value Default port MySQL URL format: jdbc:mysql: ...

  6. ORACLE用SYS登录报ORA-28009:connection as SYS should be as SYSDBA OR SYSOPER解决方法

    情况一:使用sqlplus登录 正常输入用户名的口令,就会报错,因为SYS是在数据库之外的超级管理员,所以我们在登录的时候 要在输入口令:口令+as sysdba(比如:123456 as sysdb ...

  7. 一次SocketException:Connection reset 异常排查

    问题描述 上一期的需求上线之后,线上多了一个异常:Connection reset.如下: [2017-03-22 00:45:00 ERROR] [creativeAuditTaskSchedule ...

  8. ADO中最重要的对象有三个:Connection、Recordset和Command

    ConnectionPtr: _ConnectionPtr m_pConnection; HRESULT hr; try{ hr = m_pConnection.CreateInstance(_uui ...

  9. jmeter测试文件上传接口报错:connection reset by peer: socket write error

    最近在对文件上传接口性能测试时,设置150线程数并发时,总会出现以下错误:connection reset by peer: socket write error 在网上搜索了一下,得到的原因有这些: ...

随机推荐

  1. 【错误解决】Error creating bean with name 'transactionManager' :nested exception is java.lang.NoClassDefFoundError: org/springframework/jdbc/datasource/

    搭建ssh框架中新建JUint测试出现的问题.这个问题实在太伤脑筋....因为不好找到解决办法 直接先说解决方式:添加org.springframework.jdbc-XX.jar,然后build p ...

  2. ThinkPHP 全局异常处理

    wqy的笔记:http://www.upwqy.com/details/273.html 在thinkphp6 和 thinkphp5 全局异常处理 稍有不同 ThinkPHP6 在 tp6 中 框架 ...

  3. GO学习-(9) Go语言基础之切片

    Go语言基础之切片 本文主要介绍Go语言中切片(slice)及它的基本使用. 引子 因为数组的长度是固定的并且数组长度属于类型的一部分,所以数组有很多的局限性. 例如: func arraySum(x ...

  4. Docker学习(4) 守护式容器

    守护式容器 stop - 等待信号 kill - 直接干死

  5. TheSuperego 实验五 团队作业2:毕业设计选题系统

    项目 内容 课程班级博客链接 https://edu.cnblogs.com/campus/xbsf/2018CST 这个作业要求链接 https://www.cnblogs.com/nwnu-dai ...

  6. TVM 高效保护隐私 ML

    TVM 高效保护隐私 ML 这篇文章描述了Myelin,一个在值得信赖的硬件飞地中保护隐私的机器学习框架,以及TVM如何使Myelin快速.关键的想法是,TVM,不像其它流行的ML框架,将模型编译成轻 ...

  7. PyTorch Data Parrallel数据并行

    PyTorch Data Parrallel数据并行 可选择:数据并行处理 本文将学习如何用 DataParallel 来使用多 GPU. 通过 PyTorch 使用多个 GPU 非常简单.可以将模型 ...

  8. 超轻量AI引擎MindSpore Lite

    超轻量AI引擎MindSpore Lite 揭秘一下端上的AI引擎:MindSpore Lite. MindSpore Lite是MindSpore全场景AI框架的端侧引擎,目前MindSpore L ...

  9. MapReduce —— MapTask阶段源码分析(Input环节)

    不得不说阅读源码的过程,极其痛苦 .Dream Car 镇楼 ~ ! 虽说整个MapReduce过程也就只有Map阶段和Reduce阶段,但是仔细想想,在Map阶段要做哪些事情?这一阶段具体应该包含数 ...

  10. 【NX二次开发】Block UI 选择对象

    属性说明 属性   类型   描述   常规           BlockID    String    控件ID    Enable    Logical    是否可操作    Group    ...