`

Connection对象一直没有被释放

SQL 
阅读更多
以下这个方法的目的是
1.先更新表sys_enterprise 里的一条记录
2.在到sys_staffs插入一条记录
3.然后 执行存储过程建里俩个表

问题是 为什么我执行成功后?到sql 2000 的查询分析器里运行

select * from sys_staffs 觉得表里的锁一直没释放呢?
难道每个 con 都要写一个 con.commit()函数
public boolean checkEnterprise(String id)
	{
		boolean flag = false;
		EnterpriseEntity enterprise = this.getEnterpriseById(id);
		String sql = "update sys_enterprise set e_isallowed = 1 where e_id = ?";
		Connection con = dbc.getConnection();
		
		CallableStatement cst = null;
		PreparedStatement pst = null;
		ResultSet rs = null;
		try {
			
			con.setAutoCommit(false);
			pst = con.prepareStatement(sql);
			pst.setString(1, id);
			pst.executeUpdate();
			
			con = null;
			con = dbc.getConnection();
			con.setAutoCommit(false);
			sql = "insert into sys_staffs(s_name,s_pwd,s_enterprisename) values(?,?,?)";
			pst = con.prepareStatement(sql);
			pst.setString(1, enterprise.getEname());
			pst.setString(2, Secret.getMD5(enterprise.getEname()));
			pst.setString(3, enterprise.getEname());
			pst.executeUpdate();
			
			con = null;
			con = dbc.getConnection();
			con.setAutoCommit(false);
			sql = "{call proc_create_enterprise '"+enterprise.getEname()+"'}";
			cst = con.prepareCall(sql);
			cst.execute();
			
			con.commit();
			flag = true;
		} catch (Exception e) {
			flag = false;
			try {
				con.rollback();
			} catch (SQLException e1) {
				e1.printStackTrace();
			}
			e.printStackTrace();
		}finally{
			dbc.close(rs, pst, con);
		}
		return flag;
	}
1
0
分享到:
评论

相关推荐

    JAVA基础:将数据库操作封装到Javabean文档信息

    因此,当连接对象在方法内被关闭后,返回的 ResultSet 就没有用了。如果真的要获得查询数据库的结果集,就把结果集对象内的所有数据,转储到以 Map 为元素的 List 对象内。 将数据库操作封装到 Javabean 中,可以...

    ADO数据库操作支持库

    - **Connection对象**:代表到数据源的连接,是所有其他ADO对象的基础。通过建立Connection,你可以打开和关闭到数据库的连接。 - **Command对象**:用于执行SQL命令或存储过程。你可以设置Command对象的属性来...

    .NET数据访问类

    4. **Connection对象**: 负责建立和管理与数据库的连接。使用各种数据库供应商提供的连接字符串,如SqlConnection(SQL Server)、OracleConnection(Oracle)等。 5. **Command对象**: 执行数据库命令,如SQL查询...

    Java(通过ganymed-ssh2-build210.jar)实现SSH远程连接linux终端

    5. **关闭资源**:在操作完成后,记得关闭通道和会话以释放资源。 整个过程涉及到了Java的IO流处理,通过输入流向远程服务器发送命令,通过输出流接收服务器返回的结果。此外,如果需要使用密钥认证,还需要处理...

    JDBC设置事务自动提交

    要设置JDBC的自动提交模式,我们需要调用`Connection`对象的`setAutoCommit`方法。以下是一个示例代码: ```java import java.sql.*; public class JDBCTransactionExample { public static void main(String[] ...

    二十三种设计模式【PDF版】

    会 Java 的人越来越多,但是一直徘徊在语言层次的程序员不在少数,真正掌握 Java 中接口或抽象类的应用不是很多,大家 经常以那些技术只适合大型项目为由,避开或忽略它们,实际中,Java 的接口或抽象类是真正体现 ...

    用listbox 显示数据库中的数据

    5. **关闭连接**:完成数据填充后,记得关闭数据库连接以释放资源。 ```csharp reader.Close(); connection.Close(); ``` 此外,还可以根据需要对`ListBox`进行样式和行为的调整,比如设置多选、排序、分组等功能...

    最新各大公司企业真实面试题-成都启明.txt

    即该操作一旦开始,就一直运行到结束,不会中途被切换出去。 - Java并发包(java.util.concurrent.atomic)提供了原子类,如AtomicInteger、AtomicLong等,它们提供了一些基本数据类型的原子操作方法。 - 原子类...

    ConnectAccess+WINFORM.rar

    主要包括DataSet、DataTable、DataRow、DataAdapter、Connection、Command、DataReader等对象。在C#中,我们可以利用这些组件实现数据库的连接、查询、插入、更新和删除等操作。 4. **连接字符串**:在C#中,要连接...

    ASP+.NET+2.0数据库经典1

    在现代Web开发领域,ASP.NET一直是备受开发者青睐的技术之一。特别是ASP.NET 2.0版本,它不仅提供了强大的功能,还大大简化了Web应用程序的开发过程。本文将重点介绍如何在ASP.NET 2.0中进行数据库操作,并通过实际...

    一篇搞定JDBC【Mysql基础】

    6. 关闭资源:确保在完成数据库操作后关闭Statement、ResultSet以及Connection对象,释放系统资源。 在用户登录验证场景中,可能会遇到SQL注入的问题。例如,直接使用用户的输入构造SQL语句可能导致恶意SQL代码执行...

    JDBC Oracle执行executeUpdate卡死问题的解决方案

    在执行完`executeUpdate`后,必须确保调用`Connection`对象的`commit()`方法来提交当前事务。这样可以释放数据库资源并结束事务,避免卡死问题。示例代码如下: ```java Statement stmt = con.createStatement();...

    ConnectionPoolTimeout

    - 确保所有的DataReader、Command和Transaction对象都被适当地关闭或释放。 #### 六、性能调优建议 除了上述基本配置外,还可以采取以下措施进一步优化连接池性能: - **定期监控**:定期监控连接池的状态,包括...

    微型 ORM-FluentData 实例详解1

    其他情况下,FluentData会自动处理资源的释放,保持数据库连接在执行查询期间一直开启。 为了创建和初始化`DbContext`,你可以将ConnectionString直接作为参数传递,或者在`.config`文件中配置ConnectionStringName...

    基于MySQL的数据库中间件Meituan-DBProxy.zip

    在连接的结构体的释放接口中,lock 的成员变量未释放,导致在连接断开,回收连接对象时会泄漏24个字节 取消admin操作中不必要的日志 去掉了在连接 admin 时报"[admin] we only handle text-based ...

Global site tag (gtag.js) - Google Analytics