我有一个需求,
需要每5秒钟执行一次,每次执行的过程需要循环根据条件查询SQL数据,之后计算在写入SQL。
怎么做才能最好。我现在做法是
定义一个静态的SqlConnection 对象共享使用。每5秒打开一次,处理完成之后再关闭。处理过程中循环语句用到的SqlConnection 对象就不进行频繁打开和关闭了。请教大家有什么好的办法。

解决方案 »

  1.   

    这个有什么问题吗?你把操作数据库的方法写好以后放在循环里面调用不就行了,
           int count = ds.Tables["[Sheet1$]"].Rows.Count;            for (int i = 0; i < count; i++)
                {                string PN80, PN52, Customer,  Dep,  UserCount;                PN80 = ds.Tables["[Sheet1$]"].Rows[i]["PN80"].ToString().Trim();                PN52 = ds.Tables["[Sheet1$]"].Rows[i]["PN50"].ToString().Trim();                Customer = ds.Tables["[Sheet1$]"].Rows[i]["客户名称"].ToString().Trim();
                    
                    Dep = ds.Tables["[Sheet1$]"].Rows[i]["Dep"].ToString().Trim();                               UserCount = ds.Tables["[Sheet1$]"].Rows[i]["人手数量"].ToString().Trim();             
                    Manger.NewDate(PN80, PN52, Customer, Dep, Flow, Convert.ToInt32(UserCount));            }
      

  2.   

    把需要计算的参数传递给SQL后台,进行计算。应该比你把数据查出来然后写回去要快。如果允许的话,你可以把整个循环弄到后台去执行。
      

  3.   

    哦大家理解错了,数据处理必须放在外面,过程有不可能在SQl里处理的过程。我的问题是,由于对数据库的操作很频繁,一个处理过程有大约100*5次的数据库操作。
    我发现一不小心就过程那个地方 try catch或者没注意就进入 SqlConnection 被关闭或者正在打开的过程中,反正不是open的状态。这种现象虽然不是很经常出现,但是作为一个windows service这样的错误是不被允许的。不知道大家怎么看这个问题,难道对每次的数据库操作都判断open状态么?