zoukankan      html  css  js  c++  java
  • 【数据操作】同一数据库内事务操作的封装

    Using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Data.SqlClient;

    namespace DBUtility
    {
        public enum EffentNextType
        {
            /// <summary>
            /// 对其他语句无任何影响
            /// </summary>
            None,
            /// <summary>
            /// 当前语句必须为"select count(1) from .."格式,如果存在则继续执行,不存在回滚事务
            /// </summary>
            WhenHaveContine,
            /// <summary>
            /// 当前语句必须为"select count(1) from .."格式,如果不存在则继续执行,存在回滚事务
            /// </summary>
            WhenNoHaveContine,
            /// <summary>
            /// 当前语句影响到的行数必须大于0,否则回滚事务
            /// </summary>
            ExcuteEffectRows,
            /// <summary>
            /// 引发事件-当前语句必须为"select count(1) from .."格式,如果不存在则继续执行,存在回滚事务
            /// </summary>
            SolicitationEvent
        }  
        public class CommandInfo
        {
            public object ShareObject = null;
            public object OriginalData = null;
            event EventHandler _solicitationEvent;
            public event EventHandler SolicitationEvent
            {
                add
                {
                    _solicitationEvent += value;
                }
                remove
                {
                    _solicitationEvent -= value;
                }
            }
            public void OnSolicitationEvent()
            {
                if (_solicitationEvent != null)
                {
                    _solicitationEvent(this,new EventArgs());
                }
            }
            public string CommandText;
            public System.Data.Common.DbParameter[] Parameters;
            public EffentNextType EffentNextType = EffentNextType.None;
            public CommandInfo()
            {

            }
            public CommandInfo(string sqlText, SqlParameter[] para)
            {
                this.CommandText = sqlText;
                this.Parameters = para;
            }
            public CommandInfo(string sqlText, SqlParameter[] para, EffentNextType type)
            {
                this.CommandText = sqlText;
                this.Parameters = para;
                this.EffentNextType = type;
            }
        }
    }

    ---------------------------------------------------------------------------------

    调用:

    List<CommandInfo> list = new List<CommandInfo>();
                    CommandInfo cmd = new CommandInfo();
                    string strSql = "insert into PPC_Man_400Tels (ManGuid,BizCode,SubCode,ManID,Status,Type) values (@ManGuid,@BizCode,@SubCode,@ManID," + status + "," + type + ")";
                    SqlParameter[] ps = new SqlParameter[]{
                                new SqlParameter("@ManID",SqlDbType.Int),
                                new SqlParameter("@ManGuid",SqlDbType.VarChar),
                                new SqlParameter("@BizCode",SqlDbType.VarChar,50),
                                new SqlParameter("@SubCode",SqlDbType.VarChar,50)};
                    ps[0].Value = mid;
                    ps[1].Value = ManID;
                    ps[2].Value = bizCode;
                    ps[3].Value = subCode;

                    string strSql1 = "update sys_V4007Code set Status=@Status  where (BizCode=@BizCode and Code=@SubCode)";
                    SqlParameter[] paras1 = new SqlParameter[] {
                                new SqlParameter("@BizCode",SqlDbType.VarChar),
                                new SqlParameter("@SubCode",SqlDbType.VarChar),
                                new SqlParameter("@Status",SqlDbType.SmallInt)};

                    paras1[0].Value = bizCode;
                    paras1[1].Value = subCode;
                    paras1[2].Value = 0;

                    cmd = new CommandInfo(strSql1.ToString(), paras1);
                    list.Add(cmd);
                    cmd = new CommandInfo(strSql.ToString(), ps);
                    list.Add(cmd);
                    DbHelperSQL.ExecuteSqlTran(list);


  • 相关阅读:
    程序员累了怎么办?
    vue.js 组件注册实例
    background新增的N个强悍功能!!!
    相思别去问得失
    你说的我正在经历
    千折扇
    盼盼Degenerate——清除浮动的方法
    let 和 var定义变量的区别-盼盼Degenerate
    winform关闭窗体时,给用户友好提示!
    web学习笔记1--HTML
  • 原文地址:https://www.cnblogs.com/a311300/p/1527441.html
Copyright © 2011-2022 走看看