TransactionHelper
public class TransactionHelper
{
public static OracleTransaction ora_Transaction = null;
public static OracleCommand ora_Command { get; set; }
public static OracleConnection ora_Conn = null;
private static string ls_XMLFile = "SysInfo.xml";//配置文檔
private static string ls_SectionName = "";
private static Action initAction = () =>
{
#region 初始化Transaction
if (string.IsNullOrEmpty(ls_SectionName)) ls_SectionName = "DBConn_EMES";
ora_Command = new OracleCommand();
ora_Conn = OracleHelper.DBOpen_Ora(ls_SectionName);
ora_Conn.Open();
ora_Command.Connection = ora_Conn;
ora_Transaction = ora_Conn.BeginTransaction();
ora_Command.Transaction = ora_Transaction;
#endregion
};
private static Action disAction = () =>
{
#region 銷毀 Transaction
if (ora_Command != null) ora_Command.Dispose();
ora_Command = null; ora_Transaction = null;
if (ora_Conn != null)
{
if (ora_Conn.State == ConnectionState.Open) ora_Conn.Close();
ora_Conn.Dispose();
}
ora_Conn = null;
#endregion
};
public TransactionHelper()
{
try
{
if (ora_Conn == null)
{
initAction.Invoke();
}
}
catch (Exception ex)
{
StringBuilder lo_StringBuilder = new StringBuilder(ex.Message.ToString());
ECCHelper.ClassHelper.WriteLog(lo_StringBuilder);
disAction.Invoke();
}
//if (ora_Conn.State == ConnectionState.Open) ora_Conn.Close();
//ora_Conn.Dispose();
}
public void executeNoneQueryCommand(string sqlCommand)
{
try
{
ora_Command.CommandText = sqlCommand;
ora_Command.ExecuteNonQuery();
}
catch (Exception ex)
{
StringBuilder lo_StringBuilder = new StringBuilder(ex.Message.ToString());
ECCHelper.ClassHelper.WriteLog(lo_StringBuilder);
disAction.Invoke();
throw ex;
}
}
/// <summary>
/// 初始調用 OracleCommnad
/// </summary>
public OracleCommand InitCommand()
{
return ora_Command;
}
/// <summary>
/// 銷毀
/// </summary>
/// <returns></returns>
public bool CommitTransaction()
{
try
{
if (ora_Transaction != null)
{
ora_Transaction.Commit(); return true;
}
else { ora_Transaction.Rollback(); return false; }
}
catch (Exception ex)
{
if (ora_Transaction != null) ora_Transaction.Rollback();
StringBuilder lo_StringBuilder = new StringBuilder(ex.Message.ToString());
ECCHelper.ClassHelper.WriteLog(lo_StringBuilder);
return false;
}
finally
{
disAction.Invoke();
}
}
}
TransactionHelper的更多相关文章
- GC Ergonomics间接引发的锁等待超时问题排查分析
1. 问题背景 上周线上某模块出现锁等待超时,如下图所示: 我虽然不是该模块负责人,但出于好奇,也一起帮忙排查定位问题. 这里的业务背景就是在执行到某个地方时,需要去表中插入一批数据,这批数据需要根据 ...
- format ZKFC失败
at org.apache.hadoop.ha.ActiveStandbyElector$WatcherWithClientRef.waitForZKConnectionEvent(ActiveSta ...
- Known BREAKING CHANGES from NH3.3.3.GA to 4.0.0
Build 4.0.0.Alpha1 ============================= ** Known BREAKING CHANGES from NH3.3.3.GA to 4.0. ...
- NHibernate利用Mindscape.NHibernateModelDesigner实现数据库与实体之间的转换及操作
环境:   Visual Studio 2010 一.Mindscape.NhibernateModelDesigner安装   在打开 ...
随机推荐
- 【docker】为docker下的php容器安装php-redis扩展【编译安装】
使用docker安装的PHPFPM容器没有Redis扩展,需要安装一下扩展. 首先进入docker的PHPFPM容器 $ docker exec -it myphpfpm /bin/bash 依次执行 ...
- synchronized的锁是针对多线程的
synchronized的锁是针对多线程的,从线程的角度去思考才能真正弄明白. Java的synchronized使用方法总结 1. 把synchronized当作函数修饰符时 这也就是同步方法,那这 ...
- 一个hql 关键字member(非mysql)引起的 vo 数据 保存数据库错误
2015-03-19 14:16:29,285 ERROR [Thread-3] (DAOHelper.java:312) - updateByEntityPK:com.agileeagle.dao. ...
- 09-sass
一.sass和scss sass最初是为了配合haml设计的,不需要大括号,用tab缩进 从第三代开始,保留缩进风格,完全向下兼容普通的css代码 二.下载配置sass compass是sass的一个 ...
- C# windows服务没有RunInstallerAttribute.Yes的公共安装程序
1.在视图状态 右键添加ServiceInstaller及ServiceProcessInstaller两个控件; 2.将serviceProcessInstaller类的Account属性改为 Lo ...
- FormCloseQuery
FormCloseQuery是一个事件回调函数,Close是一个功能函数.而FormCloseQuery与窗口的close有什么不同,通过跟踪Call stack发生在调用Close()函数关闭窗口时 ...
- 用Taro做个微信小程序Todo, 小白工作记录
微信小程序框架: Taro 做微信小程序的框架, 几个比较主流的: 官方的WePY: https://tencent.github.io/wepy/document.html#/ 美团的mpvue: ...
- 简单网络编程如何用python来实现
对于网络编程,通信模式是后台必备技能,先用最基础代码实现,理解一些 API 的含义,在深入学习. 总是有读者问过我关于 Python 后台开发相关,如果想走 Python 后台方向,对于 Python ...
- 「日常开发」记一次因使用Date引起的线上BUG处理
生活中,我们需要掌控自己的时间,减少加班,提高效率:日常开发中,我们需要操作时间API,保证效率.安全.稳定.现在都2020年了,了解如何在JDK8及以后的版本中更好地操控时间就很有必要,尤其是一次线 ...
- 论JDK5/7/8版本都做出了哪些革新
在Java发展的里程碑上,有三个版本做出的改动,是革命性的 为什么说是革命性的呢? 因为这三个版本所推出的有些新机制,在之后的Java框架开发.新类的产生等等中, 都被广泛使用了. 那么,这三个版本的 ...