• 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;


     

  • 相关阅读:
    函数的有用信息,装饰器 day12
    函数名、闭包、装饰器 day11
    函数的动态参数与命名空间 day10
    函数 day9
    集合 day8
    文件操作 day8
    基础数据类型补充,及capy daty7
    day7 回顾
    编码补充 daty 6
    字典的增删改查 daty 5
  • 原文地址:https://www.cnblogs.com/lpq21314/p/6004999.html
Copyright © 2020-2023  润新知