MSSqlHelper

 

复制代码
 public class MSSqlHelper : IDisposable
    {
        private SqlConnection _con;
        public void Dispose()
        {
            this._con.Dispose();
        }
        public MSSqlHelper(string connName)
        {
            _con = new SqlConnection(ConfigurationManager.ConnectionStrings[connName].ConnectionString);
        }

        #region 增删改查
        public int ExecuteNonQuery(string sql, params SqlParameter[] parameters)
        {
            SqlCommand cmd = GetCommand(sql, parameters);
            return cmd.ExecuteNonQuery();
        }

        public object ExecuteScalar(string sql, params SqlParameter[] parameters)
        {
            SqlCommand cmd = GetCommand(sql, parameters);
            return cmd.ExecuteScalar();
        }

        public DataTable ExecuteDataTable(string sql, params SqlParameter[] parameters)
        {
            DataTable dt = new DataTable();
            SqlCommand cmd = GetCommand(sql, parameters);
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            da.Fill(dt);
            return dt;
        }

        public SqlDataReader GetSqlDataReader(string sql, params SqlParameter[] parameters)
        {
            SqlCommand cmd = GetCommand(sql, parameters);
            return cmd.ExecuteReader(CommandBehavior.CloseConnection);
        }

        private SqlCommand GetCommand(string commandtext, SqlParameter[] parameters)
        {

            if (this._con.State == System.Data.ConnectionState.Closed)
            {
                this._con.Open();
            }
            else if (this._con.State == System.Data.ConnectionState.Broken)
            {
                this._con.Close();
                this._con.Open();
            }

            SqlCommand cmd = new SqlCommand();
            cmd.CommandText = commandtext;
            cmd.Connection = this._con;
            cmd.Transaction = this._tran;
            if (parameters != null)
            {
                cmd.Parameters.AddRange(parameters);
            }
            return cmd;
        }
        #endregion

        #region 事务

        private SqlTransaction _tran;
        /// <summary>
        /// 开启事务
        /// </summary>
        public void BeginTran()
        {
            _tran = this._con.BeginTransaction();
        }
        /// <summary>
        /// 提交事务 
        /// </summary>
        public void CommitTran()
        {
            this._tran.Commit();
        }
        /// <summary>
        /// 回滚事务 
        /// </summary>
        public void RollbackTran()
        {
            this._tran.Rollback();
        }
        #endregion 
    }
复制代码

 

//调用

复制代码
 string sql = @"INSERT INTO dbo.Person( Name, Age, gender, Tel )VALUES('lk','12','0','1111222')";
            string sql2 = @"INSERT INTO dbo.Person( Name, Age, gender, Tel )VALUES('xl','12','1','1111222')";
            using (MSSqlHelper db = new MSSqlHelper())
            {
                try
                { 
                    db.BeginTran();
                    db.ExecuteNonQuery(sql); 
                    db.ExecuteNonQuery(sql2);
                    db.CommitTran(); 
                }
                catch
                {
                    db.RollbackTran();
                }
            }
复制代码
posted @   兴趣就是天赋  阅读(540)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示