안녕하세요. 빌더로 프로그래밍중인 개발자입니다.
많이 찾아보긴 했는데 서비스+DB에 대한 자료가 없어서 이렇게 글 남깁니다.
우선 서비스 프로그램에서 FDConnection과 FDQuery를 이용해 DB를 구축했는데요.
void __fastcall TService::ServiceExecute(TService *Sender)
{
Stream = new TMemoryStream();
try
{
try
{
idServer->Bindings->Clear();
idServer->Bindings->Add()->IP = GetLocalIP();
idServer->Bindings->Add()->Port = 800;
idServer->Bindings->Add()->IPVersion = Id_IPv4;
idServer->Active = true;
DM->qrDevice->Active = true;
while (!Terminated)
{
ServiceThread->ProcessRequests(true);
}
idServer->Active = false;
}
catch(...)
{
dbg(L"Error : Service Execute (Error Code : %d)", GetLastError());
}
}
__finally
{
dbg(L"Terminate : Service Execute", "");
delete Stream;
}
}
Query는 "select * from Power"로 간단히 Power정보를 가져옵니다. (현재 Table은 데이터가 없는 상태입니다)
기존 프로그램에서 잘 됐었는데 Service 프로그램으로 옮긴 뒤
디자인 타임에서 FDQuery의 Active를 True로 설정해놓고 실행하면 정상동작 하지만
런타임에서 Open 또는 Active = true를 할 경우 서비스가 중지되는 현상이 발생합니다.
그리고 GetLastError는 0을 뱉어냅니다.. 어떤 오류인지에 대한 정보가 없어 질문이 좀 난해하네요..
혹시 서비스 프로그램 내에서 DB를 사용할때 주의해야 할 사항 같은게 있나요? 아니면 사용이 불가능한가요?
답변 주시면 감사드리겠습니다.
|