`

org.xx. with address: "com.mysql.jdbc.Statement@a2f8" is closed.

阅读更多
java.sql.SQLException: org.apache.tomcat.dbcp.dbcp.DelegatingStatement with address: "com.mysql.jdbc.Statement@a2f8" is closed.
at org.apache.tomcat.dbcp.dbcp.DelegatingStatement.checkOpen(DelegatingStatement.java:137)
at org.apache.tomcat.dbcp.dbcp.DelegatingStatement.executeQuery(DelegatingStatement.java:206)


这个异常绝对要人郁闷。大概意思是,操作的时候,因为连接已经被关闭了,所以失败出异常。我在网上找烂的答案,结果还是没有。我细细的找代码,没有发现哪里提前关了连接。

终于,1个多小时过去了,找到了错误的原因,是代码的问题。一开始我写成这样:


public class UserService {
	
        private UserDao userDao=new UserDao();
		
	public void saveUserInformationByRegister(String name,String password){
				
			
			try {
				String sql="INSERT INTO user(LoginName,PassWord) VALUES"+"('"+name+"','"+password+"')";
				userDao.init();//取得连接
				userDao.startTransaction();//开启显示事务
				userDao.initStatement();//创建stat语句
				userDao.execute(sql);
				userDao.commitTransaction();//事务完成
			} catch (Exception e) {
				userDao.RollBackTransaction();
				e.printStackTrace();
			}finally{
				userDao.release();
			}
		
			
		
	}
	
}


引用
问题就是出在private UserDao userDao=new UserDao();上,这里的UserDao永远都是这一个该死的实例,每次掉用这个方法的时候,它都只认这个对象,因为第一次执行成功之后连接已经被关了,所以第2次掉这个方法的时候,怎么掉也没用,连接总是关的。


改成这样:

public class UserService {
	
	public void saveUserInformationByRegister(String name,String password){
				
			UserDao userDao=new UserDao();
			try {
				String sql="INSERT INTO user(LoginName,PassWord) VALUES"+"('"+name+"','"+password+"')";
				userDao.init();//取得连接
				userDao.startTransaction();//开启显示事务
				userDao.initStatement();//创建stat语句
				userDao.execute(sql);
				userDao.commitTransaction();//事务完成
			} catch (Exception e) {
				userDao.RollBackTransaction();
				e.printStackTrace();
			}finally{
				userDao.release();
			}
		
			
		
	}
}


引用
把UserDao userDao=new UserDao();实例化移到方法体内,每次NEW的对象都不在是同一个,这样一来,自然不会出现以上那种幼稚的错误了。


引用
OK,异常解决了,我继续体验JDBC+SERVLET/JSP带来的没有框架干扰的开发吧。


分享到:
评论

相关推荐

    Maven更新失败,Cannot resolve plugin org.apache.maven.plugins:maven-compiler-plugin:3.1

    Maven更新问题 今天Maven在更新的时候发现一直更新不成功,总结下解决方法。 在apache-maven-3.5.2/conf/setting.xml中加入... junit Address/ http://jcenter.bintray.com/ central alimaven aliyun maven htt

    Hadoop(HDFS、YARN、HBase、Hive和Spark等)默认端口表

    9001 dfs.namenode.rpc-address,DataNode会连接这个端口 50070 dfs.namenode.http-address 50470 dfs.namenode.https-address 50100 dfs.namenode.backup.address 50105 dfs.namenode.backup.http-address 50090 ...

    SQLite JDBC Driver

    SQLite JDBC Driver是一个用于Java应用程序与SQLite数据库之间进行连接的驱动程序。它允许Java开发者通过Java Database Connectivity (JDBC) API来操作SQLite数据库,实现数据的存取、查询、更新等功能。SQLite是一...

    解决jvmjava.net.BindException: Address already in use: JVM_Bind异常

    【Java中的`java.net.BindException: Address already in use: JVM_Bind`异常】 在Java编程中,当你尝试启动一个服务器端应用,如Tomcat,或者任何需要监听特定端口的服务时,可能会遇到`java.net.BindException: ...

    启动tomcat时 错误: 代理抛出异常 : java.rmi.server.ExportException: Port already in use: 1099的解决办法

    nested exception is: java.net.BindException: Address already in use: JVM_Bind  这里说的是1099端口被其它进程占用了. 二.解决办法  找出占用1099端口的进程,进入windows命令,查看什么进程占用了1099端口...

    QT 下载:Download from your IP address is not allowed

    Download from your IP address is not allowed 百度网盘永久连接: QT下载: qt-opensource-linux-x64-5.8.0.run: 链接:https://pan.baidu.com/s/1sQ3tqPaWdDnmhBYAc_XR7g qt-opensource-linux-x64-5.13.1....

    JMeter分布式原理,远程启动配置,jmeter在Linux上分布式压测环境搭建配置,命令行运行+问题集合,修改jvm值

    本人实践,物超所值,一站式解决jmeter负载机环境问题,问题集合含: ... localhost.localdomain is a loopback address.An error occurred: Cannot start. localhost.localdomain is a loopback address.

    mysql-jdbc

    MySQL-JDBC是Java开发者在应用程序中与MySQL数据库交互的标准方式。JDBC(Java Database Connectivity)是Java平台中用于规范客户端程序如何访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。本...

    上网账号密码一键备份

    Physical Address. . . . . . . . . : 00-17-31-89-F7-1A Dhcp Enabled. . . . . . . . . . . : No IP Address. . . . . . . . . . . . : 192.168.1.106 Subnet Mask . . . . . . . . . . . : 255.255.255.0 ...

    EurekaLog_7.5.0.0_Enterprise

    Later is supported when map2dbg.exe tool is placed in \Bin folder of EurekaLog installation (separate download is required) 5)....Added: Exception2HRESULT in EAppDLL to simplify developing DLLs with ...

    oracle-jdbc-12.2.0.1.zip

    例如,`jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=hostname)(PORT=port))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=servicename)))`。 4. **SQL执行**: `java.sql.Statement`、`...

    ipaddress 5.3.3 java版

    IPAddress-master.zip\IPAddress-master\IPAddress\dist\IPAddress.jar https://github.com/seancfoley/IPAddress/ <project name="Create IP Address API" default="run" basedir="."> <description>Create IP ...

    JDBC数据基础知识.pptx

    在上述示例中,我们首先加载MySQL的JDBC驱动,然后建立连接,创建Statement对象,执行查询并处理ResultSet,最后关闭所有资源。注意,这个示例假设已经有一个名为`friends`的表存在于MySQL数据库中,且其结构与提供...

    Android代码-AddressSelector

    compile 'com.smartTop:jd-address:1.0.3' } 使用方法 AddressSelector selector = new AddressSelector(context); selector.setOnAddressSelectedListener(new AddressSelector.OnAddressSelectedListener() { @...

    ensp dhcp中继配置.docx

    Link local IPv6 address...........: fe80::5689:98ff:fed5:232 IPv6 address......................: :: / 128 IPv6 gateway......................: :: IPv4 address......................: 192.168.2.253 ...

    sqlite jdbc jar java jdbc 链接 sqlite sqlite-jdbc-3.8.11.1.jar

    SQLite JDBC 是一个开源的 Java 驱动程序,允许 Java 应用程序通过 JDBC API 连接到 SQLite 数据库。SQLite 是一个轻量级、自包含的数据库引擎,无需单独的服务器进程,非常适合嵌入式应用或者对小型项目的数据存储...

    网络工程师必晓的网络经典命令

    Address: 202.99.160.68 >server 202.99.41.2 则将DNS改为了41.2 > pop.pcpop.com Server: ns.hesjptt.net.cn Address: 202.99.160.68 Non-authoritative answer: Name: pop.pcpop.com Address: 202.99.160....

Global site tag (gtag.js) - Google Analytics