using System;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
/// <summary>
/// DB Connect Singleton pattern
/// </summary>
public sealed class DBConnSingleton
{
#region Private Member Variables
private static DBConnSingleton _instance = null;
private static readonly object _lock = new object();
private SqlConnection _con = null;
private bool _isConnected = false;
#endregion
#region Private Methods
/// <summary>
/// close DB Connect
/// </summary>
private void OpenDBConnection()
{
string sqlConnection = GetConfig();
_con = new SqlConnection(sqlConnection);
_con.Open();
_isConnected = true;
}
/// <summary>
/// GetConfig
/// </summary>
private string GetConfig()
{
Configuration config =
System.Web.Configuration.WebConfigurationManager
.OpenWebConfiguration(System.Web.HttpContext.Current.Request.ApplicationPath);
AppSettingsSection appSection = (AppSettingsSection)config.GetSection("appSettings");
// get Sql Connection
string sqlConnection = appSection.Settings["ConnectionString"].Value;
return sqlConnection;
}
/// <summary>
/// close DB Connect
/// </summary>
private void CloseConnect()
{
if ( null != this._con )
{
if ( true == this._isConnected )
{
this._con.Close();
//instance.con.Close();
}
}
}
#endregion
#region Constructors / Destructor
/// <summary>
/// Constructors
/// </summary>
static DBConnSingleton()
{
}
/// <summary>
/// Constructors
/// </summary>
private DBConnSingleton()
{
OpenDBConnection();
}
/// <summary>
/// Destructor
/// </summary>
~DBConnSingleton()
{
CloseConnect();
}
#endregion
#region Public Properties
/// <summary>
/// DB Connect Singleton Instance
/// </summary>
public static DBConnSingleton Instance
{
get
{
lock ( _lock )
{
if ( _instance == null )
{
_instance = new DBConnSingleton();
}
return _instance;
}
}
}
/// <summary>
/// Sql Connection
/// </summary>
public SqlConnection ConnOpen
{
get
{
return this._con;
}
}
#endregion
}
Singleton
最新推荐文章于 2024-07-24 10:56:29 发布