繁体   English   中英

与我的ASP.NET Web应用程序的多个SQL Server连接

[英]Multiple SQL Server connection to my ASP.NET web application

我有一个用于建立与sql server的连接的类。 现在,我想用3个连接分别将用户访问我的应用程序连接到我的应用程序。 我如何在这个班上实现这一点。

namespace SafetyNet.Logic
{
    public class DBManager : IDisposable
    {
        #region Privates
        public const string Database_Index = "";

        private String _innerTransName = "innerTransaction";
        private SqlConnection _conn = null;
        private SqlTransaction _trans = null;
        private bool _disposed = false;
        public static readonly string DBConnectionString = ConfigurationManager.ConnectionStrings["Connection String"].ToString();

        public DBManager()
            : this(DBConnectionString)
        {
            string connection = "";   

            this._innerTransName = "Guide" + DateTime.UtcNow.Ticks.ToString();
        }

        public DBManager(string connectionString)
        {
            string connection = "";
            _conn = new SqlConnection(connectionString);
            this._innerTransName = "Guide" + DateTime.UtcNow.Ticks.ToString();
        }

        public String ConnectionString
        {
            get 
            {
                return ConnectionString;
            }
        }

        private void Open()
        {
            if (_conn != null && _conn.State != ConnectionState.Open)
            {
                _conn.Open();
            }
        }

        public void Close()
        {
            if (_conn != null)
            {
                if (_conn.State == ConnectionState.Open)
                    _conn.Close();
            }
        }

        public void Dispose()
        {
            Dispose(true);
            GC.SuppressFinalize(this);
        }

        protected void Finalize()
        {
            Dispose(true);
        }

        private void Dispose(bool disposing)
        {
            if (!_disposed)
            {
                if (_trans != null)
                {
                    _trans.Dispose();
                    _trans = null;
                }
                if (_conn != null)
                {
                    _conn.Close();
                    _conn.Dispose();
                    _conn = null;
                }
                _disposed = true;
            }
        }

        #endregion

        #region Transaction

        public SqlTransaction BeginTransaction()
        {
            Open();
            if (_trans == null)
                _trans = _conn.BeginTransaction(IsolationLevel.ReadUncommitted, _innerTransName);
            return _trans;
        }

        public void CommitTransaction()
        {
            if ((_conn.State == ConnectionState.Open) && (_trans != null))
            {
                _trans.Commit();
            }
        }

        public void RollbackTransaction()
        {
            if ((_conn.State == ConnectionState.Open) && (_trans != null))
            {
                _trans.Rollback(_innerTransName);
            }
        }

        public SqlConnection GetConnection()
        {
            return _conn;
        }

        #endregion
    }
}

提前致谢。

如果您希望三个连接使用不同的连接/权限,则必须向配置中添加三个不同的连接字符串,并根据一些区分符(用户类型等)加载它们

更改代码以使用不同的连接字符串。

但是,如果这是有关并发连接(相同的连接字符串)的问题,则可以依靠.Net支持的默认连接池。 默认情况下,它支持许多并发连接。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM