最近做项目,要用到两个库里的两个表。
自己在用JDBC对另一个库中的表进行操作的时候,第一次修改密码很成功(两个表中的数据都进行了修改),然而当我再次修改密码的时候,却出现:
NonTransientConnectionException: No operations allowed after connection closed
这样的错误,好几天都不知道怎么解决。代码如下:
/**
* modify cloudStack user password(JDBC)
* @author xxxx
* time:2012-03-13
* updateTime:2012-03-19
*/
@Repository
public class CloudStackUserDAO implements ICloudStackUserDAO{
private static final Log logger = LogFactory.getLog(CloudStackUserDAO.class);
//get jdbc connection
//DBUtil 获得 connection
private static Connection conn = DBUtil.conn();
private static Statement stmt = null;
public CloudStackUserDAO() {
// do nothing
}
/*
* (non-Javadoc)
* @see com.cloud.dao.cloudstack.ICloudStackUserDAO#modifyCloudStackUserPassword(long, java.lang.String, java.lang.String)
*/
@Override
public void modifyCloudStackUserPassword(long cloudUserId, String userName, String password){
logger.debug("modify cloudStack user password");
/*try {
// 取消掉自动提交
//conn.setAutoCommit(false);
} catch (SQLException e1) {
e1.printStackTrace();
}*/
String sql = "update cloud.`user` u set password='" + password + "' where u.account_id="
+ cloudUserId + " and u.username='" + userName +"'";
logger.info("modify cloudStack user password sql: " + sql);
try {
stmt = conn.createStatement();
int i = stmt.executeUpdate(sql);
//conn.commit(); // commit
logger.info("modify cloudStack user password success , update rows = " + i);
} catch (SQLException e) {
logger.info("modify cloudStack user password failed");
e.printStackTrace();
/*try {
//conn.rollback(); //rollback
} catch (SQLException e1) {
e1.printStackTrace();
}*/
}finally{
try {
if(stmt != null) {
stmt.close();
}
if(conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
当第二次进行操作的时候就会出现上面所说的问题。
后来经过尝试对代码做了相应的修改,如下:
/**
* modify cloudStack user password(JDBC)
* @author wanggang
* time:2012-03-13
* updateTime:2012-03-19
*/
@Repository
public class CloudStackUserDAO implements ICloudStackUserDAO{
private static final Log logger = LogFactory.getLog(CloudStackUserDAO.class);
//get jdbc connection 在这里做了相应的修改
private static Connection conn = null;
private static Statement stmt = null;
public CloudStackUserDAO() {
// do nothing
}
/*
* (non-Javadoc)
* @see com.cloud.dao.cloudstack.ICloudStackUserDAO#modifyCloudStackUserPassword(long, java.lang.String, java.lang.String)
*/
@Override
public void modifyCloudStackUserPassword(long cloudUserId, String userName, String password){
logger.debug("modify cloudStack user password");
/*try {
// 取消掉自动提交
//conn.setAutoCommit(false);
} catch (SQLException e1) {
e1.printStackTrace();
}*/
conn = DBUtil.conn();
String sql = "update cloud.`user` u set password='" + password + "' where u.account_id="
+ cloudUserId + " and u.username='" + userName +"'";
logger.info("modify cloudStack user password sql: " + sql);
try {
stmt = conn.createStatement();
int i = stmt.executeUpdate(sql);
//conn.commit(); // commit
logger.info("modify cloudStack user password success , update rows = " + i);
} catch (SQLException e) {
logger.info("modify cloudStack user password failed");
e.printStackTrace();
/*try {
//conn.rollback(); //rollback
} catch (SQLException e1) {
e1.printStackTrace();
}*/
}finally{
try {
if(stmt != null) {
stmt.close();
}
if(conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
至于为什么这样做,我也在思考中,希望大家给予指点。
分享到:
相关推荐
解决:com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allowed after statement closed.
使用mysql+cp30连接池时,报错No operations allowed after connection closed。从报错信息来看,是connection断开导致的错误。在网上搜索后发现,较新版本的mysql配置了connection的默认时间,默认时间一般为8个...
java.sql.SQLException: Operation not allowed after ResultSet closed java.sql.SQLException: QueryRunner requires a DataSource to be invoked in this way, or a Connection should be passed in
主要介绍了php运行提示:Fatal error Allowed memory size内存不足的解决方法,分别针对有服务器管理权限和没有服务器管理权限的情况分析解决方法,是非常实用的技巧,需要的朋友可以参考下
Android WebView 报 Not allowed to load local resource错误的解决办法 博客地址:http://blog.csdn.net/yuzhiqiang_1993/article/details/76228541
本文将详细介绍在使用curl访问特定域名时遇到405 Method Not Allowed错误的解决方法。首先,我们先来理解什么是405错误以及其背后可能的原因。 HTTP状态码405 Method Not Allowed表示客户端请求的HTTP方法不被...
import cycle not allowed(解决方案).md
Django 允许 CIDR 一个 Django 中间件,用于在 ALLOWED_HOSTS 中启用 CIDR IP 范围。快速开始安装 Django 允许 CIDR: pip install django-allow-cidr将中间件添加到您的 MIDDLEWARE_CLASSES(对于 Django < 1.10...
8. 结果集已关闭:`java.sql.SQLException: Operation not allowed after ResultSet closed`提示在结果集关闭后尝试访问数据,确保在适当的时间点关闭并处理结果集。 9. 类型错误:`Data truncated for column '...
主要介绍了基于Springboot2.3访问本地路径下静态资源的方法(解决报错:Not allowed to load local resource),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着...
"No 'Access-Control-Allow-Origin'"错误是由于浏览器的同源策略(Same-origin Policy)限制所致,该策略规定,JavaScript发起的Ajax请求只能访问与当前页面同源(协议、域名、端口都相同)的资源。当尝试跨域请求时...
解决JsonException: Max allowed object depth reached while trying to export from type UnityEngine.Vector3
MySQL导入sql脚本错误:2006 – MySQL server has gone away 到如一些小脚本很少报错,但最近导入一个10+M的SQL脚本,却重复报错: Error occured at:2014-03-24 11:42:24 Line no.:85 ...max_allowed_pa
本文实例讲述了ThinkPHP提示错误Fatal error: Allowed memory size的解决方法。分享给大家供大家参考。具体分析如下: 如果你的ThinkPHP提示你:致命错误(Fatal error: Allowed memory size),根据网上说的提高...
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....
下面写一下,这两个要是有no了,怎么恢复。... 一旦io为no了先看err日志,看看爆什么错,很可能是网络,也有可能是包太大收不了,这个时候主备上改max_allowed_packet这个参数。 如果是slave_sql_running
这个存储库有助于增加令人敬畏的。关于Android-Speech-Bubble 是一个在 android ListView中使用 9 个补丁图像的演示的努力这个怎么运作! 好吧,可以在这里找到相关的博客条目: 执照特此授予任何人免费获得本软件...
Check whether unlocking is allowed (1) or not(0). advanced: erase PARTITION Erase a flash partition. format[:FS_TYPE[:SIZE]] PARTITION Format a flash partition. set_active SLOT Set the active ...
标题中的“NR网络拒绝码-5gmm_cause = 15(No suitable cells in tracking area)”是指在5G NR网络中,UE(用户设备)接收到一个特定的网络拒绝码,即5gmm_cause #15,表示在当前追踪区域(Tracking Area)内没有适合...