zoukankan      html  css  js  c++  java
  • 使用Unidac内置连接池

    第一步:

       放一个TUniconnection并设置相关属性

    之后直接使用TUniconnection对象即可

    跟踪unidac源码uni单元1540行中可以看到

    Connect方法调用CreateIConnection

    procedure TUniConnection.CreateIConnection;
    var
      Connection: TCRConnection;
      ConnectionParameters: TCRConnectionParameters;
    
      procedure SetSpecificObjectProps(SetAllProps: boolean);
      begin
        FProvider.SetObjectProps(Connection, FSpecificOptions.Values, SetAllProps);
        FSpecificOptions.IsModified := False;
      end;
    
    begin
      CheckProvider;
    
      Connection := FIConnection;
    
      if Connection = nil then begin
        if Pooling and FProvider.IsPoolingSupported then begin
          ConnectionParameters := FProvider.GetConnectionParametersClass.Create;
          try
            ConnectionParameters.MinPoolSize := PoolingOptions.MinPoolSize;
            ConnectionParameters.MaxPoolSize := PoolingOptions.MaxPoolSize;
            ConnectionParameters.ConnectionLifeTime := PoolingOptions.ConnectionLifetime;
            ConnectionParameters.Validate := PoolingOptions.Validate;
            ConnectionParameters.Username := Username;
            ConnectionParameters.Password := Password;
            ConnectionParameters.Server := Server;
            ConnectionParameters.IOHandler := FIOHandler;
            ConnectionParameters.OnError := DoError;
            if FProvider.IsDatabaseSupported then //upd1
              ConnectionParameters.SetProp(prDatabase, FDatabase);
            if FProvider.IsPortSupported then
              ConnectionParameters.SetProp(prPort, Port);
    
            FProvider.SetObjectProps(ConnectionParameters, SpecificOptions, True);
    
            Connection := FProvider.GetConnectionPoolingManagerClass.GetConnection(
              ConnectionParameters, TUniSQLMonitor);
          finally
            ConnectionParameters.Free;
          end;
        end
        else begin
          Connection := GetIConnectionClass.Create;
          Connection.IOHandler := FIOHandler;
          if FProvider.IsDatabaseSupported then
            Connection.SetProp(prDatabase, FDatabase);
          if FProvider.IsPortSupported then
            Connection.SetProp(prPort, Port);
        end;
    
        Connection.SetProp(prDisconnectedMode, Options.DisconnectedMode);
        Connection.SetProp(prEnableBCD, Options.EnableBCD);
      {$IFDEF VER6P}
      {$IFNDEF FPC}
        Connection.SetProp(prEnableFMTBCD, Options.EnableFMTBCD);
      {$ENDIF}
      {$ENDIF}
        Connection.SetProp(prDefaultSortType, Variant(Options.DefaultSortType));
        // if connection is just created we need to set all options
        SetSpecificObjectProps(True);
    
        SetIConnection(Connection);
      end;
    
      if FSpecificOptions.IsModified then
        SetSpecificObjectProps(False);
    end;
    

      

  • 相关阅读:
    C语言判断字符串是否是 hex string的代码
    红米手机使用应用沙盒一键修改sdk信息
    Python illustrating Downhill simplex method for minimizing the user-supplied scalar function的代码
    荣耀5.0以上手机(亲测有效)激活xposed框架的经验
    java压缩指定目录下的所有文件和文件夹的代码
    荣耀7.0系统手机最简单激活Xposed框架的步骤
    小米平板7.0系统如何不root激活Xposed框架的方法
    安装与配置Flutter开发环境
    Spring Boot 2
    Flutter介绍
  • 原文地址:https://www.cnblogs.com/pengshaomin/p/4126662.html
Copyright © 2011-2022 走看看