zoukankan      html  css  js  c++  java
  • 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;


     

  • 相关阅读:
    DOM和XMLHttpRequest对象的属性和方法
    【代码版】今天,你的密码泄露了吗?
    使用Smarty的相关注意事项及访问变量的几种方式
    HttpWatch工具简介及使用技巧
    Smarty中的请求变量和保留变量的使用范例
    Linux管道操作
    发布mvc3报错:403.14Forbidden Web 服务器被配置为不列出此目录的内容
    仿Linux中的cp操作
    Fedora的ifconfig命令
    @ Register和@ Reference的区别
  • 原文地址:https://www.cnblogs.com/lpq21314/p/6004999.html
Copyright © 2011-2022 走看看