내 Datasnap 클라이언트 응용 프로그램에서 내 메서드 및 ProviderConnection에 대해 1 TSQLConnection을 사용합니다. 연결이 끊어 질 때 문제가 발생합니다. TSQLConnection.Connected와 TSQLConnection.ConnectionState 모두이 정보를 가져 오지 않습니다.클라이언트 - 서버 연결을 통해 Mannaging SQLConnection/Datasnap
내 TSQL 연결이 열려 있지만 인터넷 연결이 끊어 지거나 서버가 중지됩니다. Datasnap 클라이언트 응용 프로그램에서 많은 오류가 발생합니다. (서버 메서드 또는 ClientDataSet)
내 서버 메서드에 대한 SQL 연결을 관리하는 함수를 만들었습니다. 예를 들어 TDSProviderConnection을 통해 연결된 ClientDataset이 가까이에있을 때 더 많은 문제가 발생합니다.
Q : 클라이언트 응용 프로그램을 관리하여 TSQL 연결의 모든 연결을 안전하게 잡으려면 어떻게해야합니까? Q : 어떻게하면 다운 타임을 어떻게 관리합니까? 그리고 저장하지 않은 클라이언트 상태를 어떻게 처리합니까?
가동 중지 후 재 연결은 문제가 아닙니다.
servermethod를 호출 할 때 예외가 발생합니다.
tmpM:=TServerMethodsClient.Create(MYTSQLCONNECTION.dbxconnection,true);
그래서 나는 더미 방법으로 내 데이터 모듈에서를 TSQLConnection을 얻기 위해 다음 방법을 쓰기. 연결이 끊어 여부를 확인하는 유일한 방법은 ... 같은 오류를 슬로우 다음 내가 재 연결 또는 가까운 프로그램에 조회 할 수 있습니다 더미 방법 느릅 나무를 통해 때문에
function TDMForm.DSConnection: TSQLConnection;
var
tmpM:TServerMethodsClient;
begin
result:=nil;
if assigned(MYTSQLCONNECTION) then begin
tmpM:=TServerMethodsClient.Create(MYTSQLCONNECTION.dbxconnection,true);
try
try
tmpM.Ping;
result:=MYTSQLCONNECTION
except
ReconnectForm.ShowModal; // has a reconnect button that tries to reconnect + shutdownbutton
if ReconnectForm.modalresult=mrOK then
result:=MYTSQLCONNECTION
else
MainForm.Close;
end;
finally
tmpm.Free;
end;
end;
end;
가 나는 방법이 방법을 썼다.
편집 : (나는 일반적인 대답과 지침 수행의 어떤 종류를 기대하고있어 내 코드의 안 보정, 이것이 바로 내가 지금 뭐하는 거지 보여되지 않습니다.).
당신은 "사용자가 다시 로그인 할 수 있습니다."라고 말하면서 어떻게 말 했는가? 내 자신의 Datasnap 응용 프로그램에서 TSQLConnection1.Connected : = False에 대한 호출도 서버 (더 이상 존재하지 않음)에게 뭔가를 말하려고하기 때문에 예외 (10053)를 발생시킵니다. 나는 여기 캐치 22에있다. 어떻게 그 주위를 돌아 다녔습니까? – nolaspeaker
@nolaspeaker - 다시 인증 할 것이라는 것을 알고 있기 때문에 예외에 대해서는별로 신경 쓰지 않습니다. 그래서 그냥'try sqlcon.Close; except end;;, 어떤 예외를 먹는다. 그런 다음 자동으로 다시 인증하거나 수동으로 로그인 대화 상자를 표시하여 사용자가 직접 로그인 할 수 있습니다. –
네, 그 핸들링은 나에게도 일어났습니다. :-) 응답 해 주셔서 감사합니다. – nolaspeaker