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;
  • 相关阅读:
    开不了的窗_____window.open
    IIS项目发布完整流程
    理解MVC模式
    ASP.NET MVC 基础(01)
    C#之线程和并发
    vue时间格式化
    windows 2013 datacenter 安装sql server2008 r2兼容性
    SQL Server DBA十大必备工具使生活轻松
    ORACLE主要的系统表和系统视图
    Oracle中spool命令实现的两种方法比较
  • 原文地址:https://www.cnblogs.com/redhat588/p/12331772.html
Copyright © 2011-2022 走看看