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

时间: 2024-11-06 07:09:47

Delphi XE FireDac 连接池的相关文章

FIREDAC连接池配置

以下在delphi XE7下测试 [delphi] view plaincopy fdphysrcldrvrlnk1: TFDPhysOracleDriverLink; fdgxwtcrsr1: TFDGUIxWaitCursor; fdphysmysqldrvrlnk1: TFDPhysMySQLDriverLink; [delphi] view plaincopy var adm:TFDManager; oParams: TStrings; [delphi] view plaincopy b

Delphi XE中使用dbExpress连接MySQL数据库疑难问题解决(对三层的例子配置有帮助)

Delphi IDE中包含一个Data Explorer的组件,如下图所示: 该组件基于dbExpress(包含TSQLConnection.TSQLDataSet.TSQLQuery.TSQLStoredProc.TSQLTable.TsqlServerMethod.TSQLMonitor.TSimpleDataSet).但是因为该组件只提供了各种数据库的抽象驱动,没有提供底层的与数据库直接交互的驱动库,因此,要想使用具体某种数据库,还需要搭配提供商驱动.本文以Delphi XE在Window

Delphi XE中使用dbExpress连接MySQL数据库疑难问题解决

Delphi IDE中包含一个Data Explorer的组件,如下图所示: 该组件基于dbExpress(包含TSQLConnection.TSQLDataSet.TSQLQuery.TSQLStoredProc.TSQLTable.TsqlServerMethod.TSQLMonitor.TSimpleDataSet).但是因为该组件只提供了各种数据库的抽象驱动,没有提供底层的与数据库直接交互的驱动库,因此,要想使用具体某种数据库,还需要搭配提供商驱动.本文以Delphi XE在Window

Delphi东京版FireDAC连接MSSQL2000提示对象名 'SYS.DATABASES' 无效

在Delphi 10.2.1 东京 版中,FireDAC默认不兼容MSSQL2000,会提示"[FireDAC][Phys][ODBC][Microsoft][ODBC SQL Server Driver][SQL Server]对象名 'SYS.DATABASES' 无效."的错误,对此需要修改FireDAC.Phys.MSSQL.pas单元进行修复: 首先从delphi目录下把FireDAC.Phys.MSSQL.pas文件复制出来,然后打开它,注释掉 {$I FireDAC.in

Firedac 数据连接池的应用

procedure TForm2.Button1Click(Sender: TObject); begin if not FDConnection1.Connected then FDConnection1.Connected := True; // FDQuery1.SQL.Text := 'select getdate()'; FDQuery1.Open('select getdate()'); Caption := FDQuery1.Fields[0].AsString; //FDQuer

Delphi XE 10 跨平台三层数据库应用教程

Delphi XE 10 跨平台三层数据库应用教程 前言: Delphi XE 开始越来越庞大,比经典的Delphi7难用,但依然是目前所有跨平台开发工具中开发效率最高.最容易上手的,其快速设计RAD理念是无与伦比的符合人性(什么?是懒惰). 目前网上XE10类似教程很少,而且学习途中遇到一些问题就难以继续了,经本菜鸟千辛万苦的求索,特推出Delphi XE 10系列教程. 三层数据库应用是目前最简单.方便.易扩展的架构,而跨平台应用又是所谓的“互联网+”最需要的,下面的教程分服务器端和客户端两

spring 使用c3po连接池

1 数据源:能够简单理解为数据的来源. 2 连接池:是缓存一定数量的数据库连接,当程序须要数据库连接的时候,直接在连接池中获取空暇的连接,使用完再放回连接池中,此连接又变成空暇状态,等待下一次连接. 有于开启连接和关闭连接比較耗费系统资源,有类连接池的管理能够降低这方面的开支. 3 常见连接池:c3p0,dbcp,proxool是常见开源的三种连接池. Spring提供的DriverManagerDataSource总是新建一个连接,根本没有起到连接池的作用. 4 连接池获取连接的方法: Con

web 连接池配置

TOMCAT J2EE项目连接池配置 web 项目的 web.xml <web-app> <resource-ref> <description>DB Connection</description> <res-ref-name>jdbc/oracle</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Contain

《深入理解mybatis原理》 Mybatis数据源与连接池

对于ORM框架而言,数据源的组织是一个非常重要的一部分,这直接影响到框架的性能问题.本文将通过对MyBatis框架的数据源结构进行详尽的分析,并且深入解析MyBatis的连接池. 本文首先会讲述MyBatis的数据源的分类,然后会介绍数据源是如何加载和使用的.紧接着将分类介绍UNPOOLED.POOLED和JNDI类型的数据源组织:期间我们会重点讲解POOLED类型的数据源和其实现的连接池原理. 以下是本章的组织结构: 一.MyBatis数据源DataSource分类 二.数据源DataSour