나는 백그라운드 타이머에서 매초마다 호출되는 정적 읽기 메서드로 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
세부 사항을 추가했습니다. –
(의견에 회신) –