如何关闭Microsoft.Practices.EnterpriseLibrary.Data.ExecuteNonQuery的连接
问题描述:
我正在使用库microsoft.practices.enterpriselibrary来访问SQL Server数据库。 我想知道如何在使用ExecuteNonQuery方法时关闭连接?如何关闭Microsoft.Practices.EnterpriseLibrary.Data.ExecuteNonQuery的连接
即:
using Microsoft.Practices.EnterpriseLibrary.Data.Sql;
SqlDatabase db = null;
try
{
db = new SqlDatabase(stringConnection);
db.ExecuteNonQuery("storedprocedure", someParams);
}
catch (Exception ex)
{
}
我不能这样做
finally
{
if (db != null)
{
((IDisposable)db).Dispose();
}
}
所以...我如何才能避免连接泄漏?
谢谢。
答
您可以将代码放入“使用”块中。这将确保完成后关闭连接。
using Microsoft.Practices.EnterpriseLibrary.Data.Sql;
SqlDatabase db = new SqlDatabase(stringConnection);
using (DbConnection con = db.CreateConnection())
{
db.ExecuteNonQuery("storedprocedure", someParams);
}
或者您可以使用con.Close()。
答
通常,您不需要担心关闭连接,因为数据访问块更有效地管理连接。您在下面的链接中的“管理连接”一节:http://msdn.microsoft.com/en-us/library/ff953187(v=pandp.50).aspx
答
Database db = DatabaseFactory.CreateDatabase();
DbCommand cmd = db.GetStoredProcCommand("GetProductsByCategory");
db.AddInParameter(cmd, "@requestId", DbType.Int32, requestId);
db.ExecuteNonQuery(cmd);
企业库处理关闭连接你,除了使用数据读取器的情况下。当使用的IDataReader,您应该使用接近或使用调用在这种情况下的Dispose(同调用close)
Database db = DatabaseFactory.CreateDatabase();
DbCommand cmd = db.GetSqlStringCommand("Select Name, Address From Customers");
using (IDataReader reader = db.ExecuteReader(cmd))
{
// Process results
}
的Dispose将关闭连接。他们在文档中有很多关于连接处理的部分。