|
// TADOConnection를 2개 사용합니다.
// adoqry1는 TADOConnection1에 연결했음. (Object Inspector에서)
// TADOConnection1 의 ConnectionString에 DB, ID, 암호등 설정했음. (테스트 클릭하면 성공)
// "장치_현상태" 는 프로시져 이름입니다.
// 장비의 현상태를 저장하는 함수
void TfrmMain::Update_Equip(int nEquip, int nState)
{
try
{
adoqry1->SQL->Clear();
adoqry1->SQL->Text = "장치_현상태 :nEquip, :nState";
adoqry1->Parameters->Items[0]->Value = nEquip;
adoqry1->Parameters->Items[1]->Value = nState;
adoqry1->ExecSQL();
}
catch (Exception &exception)
{
}
}
//---------------------------------------------------------------------------
위와 같이 데이타 수신시 장비의 상태를 저장합니다.
어떤 이유에서 DB서버의 문제가 생겨서 끊어졌다가 다시 살아났을때
데이타 수신해도 DB에 저장을 못합니다.
DB서버가 끊어졌을때 TADOConnection가 끊어져서 그런겁니까?
위에 함수에서 어떻게 수정을 해야 하는지요?
프로시져에 저장하기 전에 DB서버와 연결이 되어 있는지 확인은 어떻게 해야 하는지요?
아시는분 부탁합니다.
Timeout 설정하는 방법말구요.
위에 함수에서 adoqry1->SQL->Clear(); 전에
if( TADOConnection1->State == (TObjectStates() << stClosed) )
TADOConnection1->Open();
if( TADOConnection2->State == (TObjectStates() << stClosed) )
TADOConnection2->Open();
을 넣어봐도 TADOConnection 2개가 모두 연결되어 있는데 디버깅으로 따라가보면
1개는 연결이 안되어있는걸고 나옵니다.
실행을 계속 하면 프로시져 저장할때 에러가 나구요.
참고로 OS는 Window 2003 을 사용하고 DB는 SQL200 Server 사용합니다.
감시 프로그램과 DB서버는 다른 PC 이구요.
|