【发布时间】:2014-01-21 06:17:10
【问题描述】:
我有一个类用于建立与 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
}
}
提前致谢。
【问题讨论】:
-
有什么理由你认为你可以比连接池做得更好吗?
标签: c# asp.net sql-server connection-string