数据库&事务处理及注意事项
2011-03-24 12:59
253 查看
public int AddMethod(PersInfoInfo enty, Tb_b_prsInfEntity entyTwo,string connZD) { SqlConnection con = new SqlConnection(this.conn); con.Open(); SqlTransaction st = con.BeginTransaction(); SqlConnection conTwo = new SqlConnection(connZD); conTwo.Open(); SqlTransaction stTwo = conTwo.BeginTransaction(); int flag = 0; try { string sql = "insert into tb_b_prsInf(prsNm,userNm,psw,dptCD,jibie,mangDep,telephone,Zhiwu,yufw)values(@prsNm,@userNm,@psw,@dptCD,@jibie,@mangDep,@telephone,@Zhiwu,@yufw)"; SqlParameter[] pr = new SqlParameter[9]; pr[0] = new SqlParameter("@prsNm", enty.prsNm); pr[1] = new SqlParameter("@userNm", enty.userNm); pr[2] = new SqlParameter("@psw", enty.psw); pr[3] = new SqlParameter("@dptCD", enty.dptCD); pr[4] = new SqlParameter("@jibie", enty.jibie); pr[5] = new SqlParameter("@mangDep", enty.mangDep); pr[6] = new SqlParameter("@telephone", enty.telephone); pr[7] = new SqlParameter("@Zhiwu", enty.Zhiwu); pr[8] = new SqlParameter("@yufw", enty.yufw); switch (enty.jibie) { case "SDZX": flag = AddSDZX(sql, pr, entyTwo, st, stTwo, enty); break; case "QX": flag = AddQX(sql, pr, entyTwo, st, stTwo, enty); break; default: flag = AddNew(sql, pr); break; } if (flag == 1) { st.Commit(); stTwo.Commit(); } else { st.Rollback(); stTwo.Rollback(); } } catch(Exception ex) { string err = ex.Message; st.Rollback(); stTwo.Rollback(); flag = -1; } finally { st.Dispose(); stTwo.Dispose(); con.Close(); conTwo.Close(); } return flag; }
注意:在我们应用事务的时候,可以将它以参数的形式传给其他方法中使用,但要注意的是,事务的定义和事物的控制要在一个模块中。并且不管事务最终是提交还是回滚,我们都在要finally中对事务进行资源释放以及数据库连接的关闭。这样才可以避免一个事务执行到rollback()或是commit()之前就退出而造成的其他资源或用户不能访问数据库资源的现象。
注意:在我们应用事务的时候,可以将它以参数的形式传给其他方法中使用,但要注意的是,事务的定义和事物的控制要在一个模块中。并且不管事务最终是提交还是回滚,我们都在要finally中对事务进行资源释放以及数据库连接的关闭。这样才可以避免一个事务执行到rollback()或是commit()之前就退出而造成的其他资源或用户不能访问数据库资源的现象。
相关文章推荐
- JDBC学习笔记(6)——获取自动生成的主键值&处理Blob&数据库事务处理
- 关于使用<s:property value="">形式取得 数据库图片地址的注意事项
- SQL Server中事务处理的注意事项
- SQL Server中事务处理的注意事项
- oracle 事务简介,锁的概念,java访问数据库注意事项
- oracle 事务处理 注意事项(笔记)
- 数据库存储历史数据设计注意事项
- 对请求统一设置编码来处理中文乱码时的注意事项
- 数据库事务处理
- std::vector 使用&&注意事项
- 工作二总结——objective-C中sqlite3数据库的处理(其三) sqlite3数据库事务的使用
- 数据库开发程序员在开发过程中的注意事项
- django项目数据库迁移过程记录及注意事项
- 关于使用jsp:include标签及<%@ include标签时要注意的事项
- Redis-Redi事务注意事项
- .NET:处理数据库事务中的并发
- 数据库 分布式系统的事务处理
- spring boot 2.0.0.M7 之 数据库-事务处理
- NoSQL数据库之Redis数据库管理六 (Redis的高级应用之事务处理、持久化操作、pub_sub、虚拟内存)
- ASP.NET Oracle数据库使用事务时注意事项