以下这个方法的目的是
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;
}
分享到:
相关推荐
因此,当连接对象在方法内被关闭后,返回的 ResultSet 就没有用了。如果真的要获得查询数据库的结果集,就把结果集对象内的所有数据,转储到以 Map 为元素的 List 对象内。 将数据库操作封装到 Javabean 中,可以...
- **Connection对象**:代表到数据源的连接,是所有其他ADO对象的基础。通过建立Connection,你可以打开和关闭到数据库的连接。 - **Command对象**:用于执行SQL命令或存储过程。你可以设置Command对象的属性来...
4. **Connection对象**: 负责建立和管理与数据库的连接。使用各种数据库供应商提供的连接字符串,如SqlConnection(SQL Server)、OracleConnection(Oracle)等。 5. **Command对象**: 执行数据库命令,如SQL查询...
5. **关闭资源**:在操作完成后,记得关闭通道和会话以释放资源。 整个过程涉及到了Java的IO流处理,通过输入流向远程服务器发送命令,通过输出流接收服务器返回的结果。此外,如果需要使用密钥认证,还需要处理...
要设置JDBC的自动提交模式,我们需要调用`Connection`对象的`setAutoCommit`方法。以下是一个示例代码: ```java import java.sql.*; public class JDBCTransactionExample { public static void main(String[] ...
会 Java 的人越来越多,但是一直徘徊在语言层次的程序员不在少数,真正掌握 Java 中接口或抽象类的应用不是很多,大家 经常以那些技术只适合大型项目为由,避开或忽略它们,实际中,Java 的接口或抽象类是真正体现 ...
5. **关闭连接**:完成数据填充后,记得关闭数据库连接以释放资源。 ```csharp reader.Close(); connection.Close(); ``` 此外,还可以根据需要对`ListBox`进行样式和行为的调整,比如设置多选、排序、分组等功能...
即该操作一旦开始,就一直运行到结束,不会中途被切换出去。 - Java并发包(java.util.concurrent.atomic)提供了原子类,如AtomicInteger、AtomicLong等,它们提供了一些基本数据类型的原子操作方法。 - 原子类...
主要包括DataSet、DataTable、DataRow、DataAdapter、Connection、Command、DataReader等对象。在C#中,我们可以利用这些组件实现数据库的连接、查询、插入、更新和删除等操作。 4. **连接字符串**:在C#中,要连接...
在现代Web开发领域,ASP.NET一直是备受开发者青睐的技术之一。特别是ASP.NET 2.0版本,它不仅提供了强大的功能,还大大简化了Web应用程序的开发过程。本文将重点介绍如何在ASP.NET 2.0中进行数据库操作,并通过实际...
6. 关闭资源:确保在完成数据库操作后关闭Statement、ResultSet以及Connection对象,释放系统资源。 在用户登录验证场景中,可能会遇到SQL注入的问题。例如,直接使用用户的输入构造SQL语句可能导致恶意SQL代码执行...
在执行完`executeUpdate`后,必须确保调用`Connection`对象的`commit()`方法来提交当前事务。这样可以释放数据库资源并结束事务,避免卡死问题。示例代码如下: ```java Statement stmt = con.createStatement();...
- 确保所有的DataReader、Command和Transaction对象都被适当地关闭或释放。 #### 六、性能调优建议 除了上述基本配置外,还可以采取以下措施进一步优化连接池性能: - **定期监控**:定期监控连接池的状态,包括...
其他情况下,FluentData会自动处理资源的释放,保持数据库连接在执行查询期间一直开启。 为了创建和初始化`DbContext`,你可以将ConnectionString直接作为参数传递,或者在`.config`文件中配置ConnectionStringName...
在连接的结构体的释放接口中,lock 的成员变量未释放,导致在连接断开,回收连接对象时会泄漏24个字节 取消admin操作中不必要的日志 去掉了在连接 admin 时报"[admin] we only handle text-based ...