几个常用得事务处理方法


    
/// <summary>
    
/// 启动事务
    
/// </summary>
    
/// <param name="cn">数据库连接</param>
    
/// <param name="cmd">命令对象</param>
    
/// <param name="transaction">事务</param>
    
/// <param name="executeString">Sql语句</param>
    
/// <returns></returns>

     public   static   int  ExecuteNonQuery(DbConnection cn,DbCommand cmd,DbTransaction transaction, string  executeString)
    
{
        
if (cn.State == ConnectionState.Closed)
        
{
            cn.Open();
        }

        cmd.Connection 
= cn;
        
if (transaction != null)
        
{
            cmd.Transaction 
= transaction;
        }

        cmd.CommandText 
= executeString;
        cmd.CommandType 
= CommandType.Text;
        
int i = cmd.ExecuteNonQuery();
        
return i;
    }

    
/// <summary>
    
/// 返回首行首列得值
    
/// </summary>
    
/// <param name="cn">数据库连接</param>
    
/// <param name="cmd">命令对象</param>
    
/// <param name="transaction">事务</param>
    
/// <param name="executeString">Sql语句</param>
    
/// <returns></returns>

     public   static   object  ExecuteScalar(DbConnection cn, DbCommand cmd, DbTransaction transaction,  string  executeString)
    
{
        
if (cn.State == ConnectionState.Closed)
        
{
            cn.Open();
        }

        cmd.Connection 
= cn;
        
if (transaction != null)
        
{
            cmd.Transaction 
= transaction;
        }

        cmd.CommandText 
= executeString;
        cmd.CommandType 
= CommandType.Text;
        
object i = cmd.ExecuteScalar();
        
return i;
    }


    
/// <summary>
    
/// 返回一个DataReader
    
/// </summary>
    
/// <param name="cn">数据库连接</param>
    
/// <param name="cmd">命令对象</param>
    
/// <param name="transaction">事务</param>
    
/// <param name="executeString">Sql语句</param>
    
/// <returns></returns>

     public   static  DbDataReader ExecuteReader(DbConnection cn, DbCommand cmd, DbTransaction transaction,  string  executeString)
    
{
        
if (cn.State == ConnectionState.Closed)
        
{
            cn.Open();
        }

        cmd.Connection 
= cn;
        
if (transaction != null)
        
{
            cmd.Transaction 
= transaction;
        }

        cmd.CommandText 
= executeString;
        cmd.CommandType 
= CommandType.Text;
        DbDataReader reader 
= cmd.ExecuteReader();
        
return reader;
    }

如果要用到上面这此只是给它几个参数就行了,成功就Commit一下,不成功就Rollback一下.

如:

        DbConnection cn = GetConnection();
        if (cn.State == ConnectionState.Closed)
        {
            cn.Open();
        }
        DbTransaction transaction = cn.BeginTransaction(IsolationLevel.ReadCommitted);
        DbCommand cmd = GetCommand();

      XXX.ExecuteNonQuery(cn, cmd, transaction, executeString) 判断这个就可以了.



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1532490 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值