我有一个C#数据库层,使用每秒钟在后台计时器中调用的静态读取方法。使用数据库最佳实践?
目前我创建SqlCommand,SqlConnection一次作为类的成员。
在每一个方法调用中,我都执行命令来获得结果,我这样做是为了避免每秒创建一次连接和命令,但是恐怕在这种方法中会发生异常,从而破坏连接或将对象处于无效状态。
这是我目前的执行(定时器处理)
static void GetBarTime(object state)
{
lock (_staticConnection)
{
SqlDataReader dataReader = null;
try
{
dataReader = _getMaxTimeCommand.ExecuteReader();
dataReader.Read();
_currentTick = dataReader.GetInt32(0);
}
catch (Exception ex)
{
//Log the error
}
finally
{
dataReader.Dispose();
}
}
}
什么是最好的做法是什么?
更多细节:
我在一个计时器这样做的还有另外一个prorcess更新我的表中的每一秒,有一个由一组客户端使用,并呼吁每一秒,以获得最新值的另一暴露方法。
因此,不是每秒钟为每个客户端执行select语句,而是在一个定时器中执行并更新客户端使用的全局变量。
你能解释的情况下,至于为什么你需要在定时器中编写代码以从DB读取事物? DB值变化的频率如何? – shahkalpesh 2009-06-29 06:47:28
我添加了详细信息 – 2009-06-29 07:05:23
(回复评论) – 2009-06-29 08:48:51