⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 transaction.cs

📁 这是一个自动排课软件(包含源码,需求分析,详细设计).希望对你有所帮助.
💻 CS
字号:

using System;
using System.Data;
using System.Data.SqlClient;

namespace DAL.SqlServer
{
    public class Connection : IConnection,IDisposable
    {
        private IDbConnection connection;
        private IDbTransaction transaction;
        private IDbCommand command;
		private bool disposed = false;

        #region IConnection接口实现

        public IDbCommand Command
        {
            get { return command; }
        }
        //打开连接并启用事务
        public void Open()
        {
			string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
			connection = new System.Data.SqlClient.SqlConnection(connectionString);
            connection.Open();
            command = connection.CreateCommand();
			transaction = connection.BeginTransaction();
            command.Transaction = transaction;
        }
		//打开连接,并由参数指定是否启用事务
        public void Open(bool useTransaction)
        {
			string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
			connection = new System.Data.SqlClient.SqlConnection(connectionString);
            connection.Open();
            command = connection.CreateCommand();
            if (useTransaction)
            {
                transaction = connection.BeginTransaction();
                command.Transaction = transaction;
            }
        }
        //关闭连接
        public void Close()
        {
            connection.Dispose();
        }
		//回滚
        public void Rollback()
        {
            transaction.Rollback();
        }
        //提交
        public void Commit()
        {
            transaction.Commit();
        }
        #endregion
		#region IDisposable接口实现
		// 实现IDisposable接口
        public void Dispose()
        {
            Dispose(true);
            // 通知垃圾收集器将自己回收
            GC.SuppressFinalize(this);
        }

        // Dispose(bool disposing) 在两种场景下调用,
        // 如果disposing等于true,通过用户代码调用
        // 如果disposing等于false,运行时在调用finalizer时调用
        private void Dispose(bool disposing)
        {
            //如果Disposed等于true,表示已被调用过
            if(!this.disposed)
            {
                // 如果disposing等于true,释放所有托管和非托管资源
                if(disposing)
                {
					command.Dispose();
                	connection.Dispose();
                }
            }
            disposed = true;
        }
		#endregion
    } 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -