2012-03-19 3 views
0

나는 hava 액세스 DB를, 내 함수 (C# .net) 중 하나를 SQL 트랜잭션을 4000 번 이상 실행해야합니다.장기 실행 쿼리가 리소스를 낭비하지 않도록하려면 어떻게해야합니까?

실행 후 DB 파일은 독점적으로 열렸습니다. * .ldb 파일이 있고 그 파일이 오랫동안 거기에 있기 때문에.

리소스를 잘못 처리하여 발생합니까?

private int AmendUniqueData(Trans trn) 
{ 
    int reslt = 0; 



    foreach (DataRow dr in _dt.Rows) 
    { 
     OleDbParameter[] _params = { 
            new OleDbParameter("@templateId",dr["Id"].ToString()), 
            new OleDbParameter("@templateNumber",dr["templateNumber"].ToString()) 
           }; 

     string sqlUpdateUnique = "UPDATE " + dr["proformaNo"].ToString().Substring(0,2) + "_unique SET templateId = @templateId WHERE [email protected]"; 

     reslt = OleDBHelper.ExecSqlWithTran(sqlUpdateUnique, trn, _params); 
     if (reslt < 0) 
     { 
      throw new Exception(dr["id"].ToString()); 
     } 
    } 
    return reslt; 
} 

트랜잭션

using (Trans trn = new Trans()) 
    { 
     try 
     { 
      int reslt=AmendUniqueData(trn); 
      trn.Commit(); 
      return reslt; 
     } 
     catch 
     { 
      trn.RollBack(); 
      throw; 
     } 
     finally 
     { 
      trn.Colse(); 
     } 
    } 
+1

데이터베이스 연결을 닫아야합니다. –

답변

0

는 데이터베이스 연결을 닫는 것을 잊지.

관련 문제