如何防止长时间运行的查询消耗资源?

时间:2012-03-19 10:40:03

标签: c# .net ado.net transactions dispose

我hava访问DB,我的一个函数(C#.net)需要在事务中执行一次超过4000次的SQL。

执行后,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 templateNumber=@templateNumber";

        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 :(得分:0)

忘记关闭数据库连接。