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;
Delphi XE FireDac 连接池的更多相关文章
- Delphi 的 FireDAC 连接管理与配置过程
Delphi 的 FireDAC 连接管理与配置过程: 使用 FireDAC 技术连接 数据库,主要是使用 TFDConnection ,其中有一参数是选择 ConnectionDefFile. ...
- 三句话搞定FireDAC连接池
form上拖入: FDManager1: TFDManager; FDConnection1: TFDConnection; //初始化连接池procedure TForm1.InitDBPool;b ...
- FIREDAC FDConnection 连接池 连接串
一.FDConnection 连接池 http://docs.embarcadero.com/products/rad_studio/firedac/frames.html?frmname=topic ...
- Delphi XE中使用dbExpress连接MySQL数据库疑难问题解决(对三层的例子配置有帮助)
Delphi IDE中包含一个Data Explorer的组件,如下图所示: 该组件基于dbExpress(包含TSQLConnection.TSQLDataSet.TSQLQuery.TSQLSto ...
- Delphi XE中使用dbExpress连接MySQL数据库疑难问题解决
Delphi IDE中包含一个Data Explorer的组件,如下图所示: 该组件基于dbExpress(包含TSQLConnection.TSQLDataSet.TSQLQuery.TSQLSto ...
- Firedac 数据连接池的应用
procedure TForm2.Button1Click(Sender: TObject); begin if not FDConnection1.Connected then FDConnecti ...
- 使用 TFDConnection 的 pooled 连接池
从开始看到这个属性,就一直认为他可以提供一个连接池管理功能, 苦于文档资料太少, 甚至在帮助中对该属性的使用都没有任何介绍,如果你搜索百度,也会发现基本没资料. 最后终于在其官方网站看到了其完整相关的 ...
- DataSnap中连接池的应用
当开发人员开始创建Delphi的DataSnap应用时很常见的数据库连接定义方式是每个数据模块建立一个连接.这样做将产生大量的数据库连接,并产生很多问题.从Delphi XE开始,EMB提供了Sess ...
- Delphi XE 10 跨平台三层数据库应用教程
Delphi XE 10 跨平台三层数据库应用教程 前言: Delphi XE 开始越来越庞大,比经典的Delphi7难用,但依然是目前所有跨平台开发工具中开发效率最高.最容易上手的,其快速设计RAD ...
随机推荐
- .NET知识梳理——4.特性Attribute
1. 特性 1.1 特性Attribute 特性就是一个类,继承自Attribute抽象类(该类无抽象方法.避免实例化),约定俗成用Attribute类结尾,标记时可省略掉Attribu ...
- php处理复选框
1.HTML <form action="getData.php" method="post" enctype="multipart/form- ...
- 零基础自学Python是看书还是看视频?
很多人都碍于Python培训班的高昂费用和有限的空余时间都选择自学Python,但是没有老师帮助,显得有些迷茫,不知应该从何处学起,也不知识看书学习还是应该看视频学习.本就来谈谈这个话题. 我们先 ...
- 关于按下ctrl+z后,之后的cin失效的问题
下面这代码按下Ctrl+z结束while输入后,接下来的cin >> val2就无法输入了 #include <iostream> #include <vector> ...
- 最近手机价格全线暴跌真的只是因为5G要来了吗?
等等党,是一群数量颇大的消费群体.他们的消费习性是绝不买刚上市的新品,而是一直等.等到他们认为产品的价格已经跌无可跌,或者性价比十足的时候再出手.不得不说,与早买早享受的尝鲜消费群体相比,等等党代表了 ...
- C语言循环语句工程用法
-循环语句分析 循环语句的基本工作方式 - 通过条件表达式判断是否执行循环体 - 条件表达式循环if语句表达式的原则 do.while.for的区别 - do语句先执行后判断,循环体至少循环一次 - ...
- Oracle允许IP访问配置
http://www.linuxidc.com/Linux/2014-10/108650.htm 1.oracle服务器下/opt/app/oracle/product/11.2.0/network/ ...
- IDA pro 6.8显示中文字符串的方法
IDA pro 6.8设置显示中文字符串的方法 M4x原创,转载请表明出处http://www.cnblogs.com/WangAoBo/p/7636335.html IDA是一款强大无比的反编译软件 ...
- HDU1074 Doing Homework(状压dp)
链接:http://acm.hdu.edu.cn/showproblem.php?pid=1074 题意:给定有n门课的作业,每门课交作业有截止时间,和完成作业所花费的时间,如果超过规定时间完成,每超 ...
- MySQL认知
MySQL 认识MySQL MySQL是什么? MySQL是最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMS(Relational Database Management S ...