zoukankan      html  css  js  c++  java
  • Delphi XE FireDac 连接池

    在开发Datasnap三层中,使用FireDac 连接  MSSQL数据库。

    实现过程如下:

    1、在ServerMethods 单元中放入 FDManager、FDPhysMSSQLDriverLink1、FDGUIxWaitCursor1等控件。

    2、自定义过程:

      private
        var
          oParams: TStrings;
    procedure TSrvMethods.SetupFDManager;    //加载数据库链接信息。
    begin
      //*****初始化*****
      oParams := TStringList.Create;
      //********* 连接池
      oParams.Add('DriverID=MSSQL');
      //oParams.Add('CharacterSet=utf8');
      oParams.Add('Server=192.168.1.199');
      //oParams.Add('Port=3306');
      oParams.Add('Database=DSCSYS');
      oParams.Add('User_Name=sa');
      oParams.Add('Password=');
      //  毫秒
      oParams.Add('POOL_CleanupTimeout=36000');
      //  毫秒
      oParams.Add('POOL_ExpireTimeout=600000');
      //最多连接数
      oParams.Add('POOL_MaximumItems=60');
      oParams.Add('Pooled=True');
      //*******
      FDManager.Close;
      FDManager.AddConnectionDef('MSSQL_DSCSYS', 'MSSQL', oParams);
      try
        FDManager.Active := True;
      except
        on E: Exception do
        begin
          frmMain.Log.Error(e.Message, 'Error');
        end;
      end;
    end;
    

    3、在 Create 事件中:

    procedure TSrvMethods.DSServerModuleCreate(Sender: TObject);
    begin
      SetupFDManager;  // 加载数据库链接
    end;

    4、在查询使用中,动态生成FDConnection,设置Connected为true 就是  从连接池中取一个连接;具体代码如下

    function TSrvMethods.QueryData(SQLStr: string): string;
    var
      fdqry1: TFDQuery;
      mConn: TFDConnection;
    begin
      try
        //***动态创建,用完释放;
        mConn := TFDConnection.Create(nil);
        mConn.ConnectionDefName := 'MSSQL_Conn';
        mConn.Connected := true;
        fdqry1 := TFDQuery.Create(nil);
        try
          fdqry1.Close;
          fdqry1.Connection := mConn;
          fdqry1.SQL.Clear;
          fdqry1.SQL.Add(SQLStr);
          fdqry1.Open();
          result := '{result:"OK",DataSet:}';
          frmMain.Log.Debug('ok', 'debug');
        finally
          fdqry1.Free;
          mConn.Free;
        end;
      except
        on E: Exception do
        begin
          result := '{Result:"失败 Error:' + e.message + '"}';
          frmMain.Log.Debug('NOok', 'debug');
        end;
      end;
    end;

    5、在关闭时候,释放创建的对象

    procedure TSrvMethods.DSServerModuleDestroy(Sender: TObject);
    begin
      oParams.Free;
    end;
  • 相关阅读:
    十月二十七学习报告
    十月二十六学习报告
    十月二十五学习报告
    十月二十四学习报告
    十月二十三学习报告
    十月二十二学习报告
    十月二十一学习报告
    十月十九学习报告
    十月十七学习报告
    十月十六学习报告
  • 原文地址:https://www.cnblogs.com/redhat588/p/12331772.html
Copyright © 2011-2022 走看看