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更新问题 今天Maven在更新的时候发现一直更新不成功,总结下解决方法。 在apache-maven-3.5.2/conf/setting.xml中加入... junit Address/ http://jcenter.bintray.com/ central alimaven aliyun maven htt
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是一个用于Java应用程序与SQLite数据库之间进行连接的驱动程序。它允许Java开发者通过Java Database Connectivity (JDBC) API来操作SQLite数据库,实现数据的存取、查询、更新等功能。SQLite是一...
nested exception is: java.net.BindException: Address already in use: JVM_Bind 这里说的是1099端口被其它进程占用了. 二.解决办法 找出占用1099端口的进程,进入windows命令,查看什么进程占用了1099端口...
admin.registry.address=zookeeper://192.168.0.102:2181 admin.config-center=zookeeper://192.168.0.102:2181 admin.metadata-report.address=zookeeper://192.168.0.102:2181 为防止端口冲突我修改为了 ...
【Java中的`java.net.BindException: Address already in use: JVM_Bind`异常】 在Java编程中,当你尝试启动一个服务器端应用,如Tomcat,或者任何需要监听特定端口的服务时,可能会遇到`java.net.BindException: ...
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负载机环境问题,问题集合含: ... localhost.localdomain is a loopback address.An error occurred: Cannot start. localhost.localdomain is a loopback address.
MySQL-JDBC是Java开发者在应用程序中与MySQL数据库交互的标准方式。JDBC(Java Database Connectivity)是Java平台中用于规范客户端程序如何访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。本...
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 ...
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 ...
在上述示例中,我们首先加载MySQL的JDBC驱动,然后建立连接,创建Statement对象,执行查询并处理ResultSet,最后关闭所有资源。注意,这个示例假设已经有一个名为`friends`的表存在于MySQL数据库中,且其结构与提供...
例如,`jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=hostname)(PORT=port))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=servicename)))`。 4. **SQL执行**: `java.sql.Statement`、`...
compile 'com.smartTop:jd-address:1.0.3' } 使用方法 AddressSelector selector = new AddressSelector(context); selector.setOnAddressSelectedListener(new AddressSelector.OnAddressSelectedListener() { @...
Link local IPv6 address...........: fe80::5689:98ff:fed5:232 IPv6 address......................: :: / 128 IPv6 gateway......................: :: IPv4 address......................: 192.168.2.253 ...
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....