2013-03-18 1 views
2

나는 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(); 
    } 
} 

그래서 ... 그런 짓을 할 수는 어떻게 연결 누수를 방지 할 수 있습니다?

감사합니다.

답변

4

코드를 "using"블록에 넣을 수 있습니다. 이렇게하면 연결이 완료된 후에 닫힙니다.

using Microsoft.Practices.EnterpriseLibrary.Data.Sql; 

SqlDatabase db = new SqlDatabase(stringConnection); 
using (DbConnection con = db.CreateConnection()) 
{ 
    db.ExecuteNonQuery("storedprocedure", someParams); 
} 

또는 con.Close()를 사용할 수 있습니다.

1
Database db = DatabaseFactory.CreateDatabase(); 
DbCommand cmd = db.GetStoredProcCommand("GetProductsByCategory"); 
db.AddInParameter(cmd, "@requestId", DbType.Int32, requestId); 
db.ExecuteNonQuery(cmd); 

엔터프라이즈 라이브러리는 데이터 판독기를 사용하는 경우를 제외하고, 당신을 위해 연결을 닫는 처리 : 아래 링크에서 "연결 관리"섹션을 확인합니다. IDataReader에를 사용하는 경우, 당신은 연결을 닫습니다이 경우 (가까운 호출하는 것과 같은)를 처분

Database db = DatabaseFactory.CreateDatabase(); 

DbCommand cmd = db.GetSqlStringCommand("Select Name, Address From Customers"); 
using (IDataReader reader = db.ExecuteReader(cmd)) 
{ 
    // Process results 
} 

파기하는 전화를 이용하여 가까운 또는를 사용해야 하나. 그들은 문서에서 연결 처리에 관한 훌륭한 섹션을 가지고 있습니다.

https://msdn.microsoft.com/en-us/library/ff648933.aspx