首页 > 代码库 > UniDAC 断线重连方法
UniDAC 断线重连方法
KBM服务端的 UniConnection 要实现断线重连(连接 MSSQLServer), 需要以下几个步骤:
一、修改单元文件:kbmMWUniDAC.pas
procedure TkbmMWUNIDACConnection.InternalOpenConnection(ConnectionPool:TkbmMWCustomConnectionPool); begin // Create new database connection using template. with TkbmMWUNIDACConnectionPool(ConnectionPool).FDBTemplate do begin // 针对UniDAC需要增加这个语句,否则连接数据库失败 FDatabase.Server := Server; FDatabase.Database := Database; FDatabase.Username := UserName; FDatabase.Password := Password; FDatabase.LoginPrompt := False; FDatabase.ProviderName := ProviderName; FDatabase.Port := Port; FDatabase.SpecificOptions.Assign(SpecificOptions); // 支持unidac重联 FDatabase.Options.LocalFailover:=Options.LocalFailover; FDatabase.OnConnectionLost:=OnConnectionLost; FDatabase.AfterConnect:=AfterConnect; with TkbmMWUNIDACConnectionPool(ConnectionPool) do if Assigned(FOnSetupDBConnection) then FOnSetupDBConnection(self,FDatabase); end; if FDatabase.ProviderName=‘SQL Server‘ then CoInitialize(nil); FDatabase.Open; end;
二. 把 UniConnection 的 Options.LocalFailover:=True ;
三. 在 UniConnection 的 ConnectionLost 事件修改如下:
procedure TDM.CON_AConnectionLost(Sender: TObject; Component: TComponent; ConnLostCause: TConnLostCause; var RetryMode: TRetryMode); begin //断线重联 if (Sender as TUniConnection).Tag<1 then begin RetryMode:=rmReconnectExecute; (Sender as TUniConnection).Tag:=(Sender as TUniConnection).Tag+1; end else begin RetryMode:=rmRaise; (Sender as TUniConnection).Tag:=0; end; end;
四、如果在服务端的函数里有调用 UniQuery 或其他数据库组件,在函数的开头加:CoInitialize(nil); 结尾加:CoUninitialize;
UniDAC 断线重连方法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。