- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据集连接池
数据集连接池的创建
PAGE8 / NUMPAGES8
当开发人员开始创建Delphi的DataSnap应用时很常见的数据库连接定义方式是每个数据模块建立一个连接。这样做将产生大量的数据库连接,并产生很多问题。
DelphiXe,提供了Session管理,更容易实现控制客户端连到服务器的数据库连接。客户端应用程序不会知道这些,服务器将完成所有的事情。
当我们创建一个DataSnap服务器时,最好的做法就是定义一个服务器容器(数据模块),其中包含DataSnap服务器组件和注册所有的服务器应用程序所需的类。在这个容器中,我们将定义一个负责处理服务器的数据库连接的方法。
作为一个例子,我已经实现了服务器容器上的一个的getConnection方法。这个方法负责
为连接池分配连接,这将有每一个客户端连接列表寻找,连接池里包含有每个客户端的连接。
private
{ Private declarations }
ListofConnection : TDictionary;
public
function GetConnection : TSQLConnection;
当服务器收到来自新的客户端的连接到数据库的请求时,getConnection将创建一个新的连接并添加到
连接池清单。如果客户已经有了一个连接相关联,getConnection则只返回的一个SqlConnection实例
。连接池使用线程ID来控制每个客户端的唯一连接。如果您使用的DataSnap2010,你必须用GetThreadSession方法来实现这个功能。
function TServerContainer1.GetConnection: TSQLConnection;
var
dbconn : TSQLConnection;
begin
if ListofConnection.ContainsKey(TDSSessionManager.GetThreadSession.Id) then
Result := ListofConnection[TDSSessionManager.GetThreadSession.Id]
else
begin
dbconn := TSQLConnection.Create(nil);
dbconn.Params.Clear;
dbconn.LoadParamsOnConnect := true;
dbconn.ConnectionName := DS Employee;
ListofConnection.Add(TDSSessionManager.GetThreadSession.Id, dbconn);
Result := dbconn;
end;
end;
连接定义后,我们需要更新所有数据集使用此连接,这样服务器的所有方法包括create 和运行时的SQL查询都将要调用getConnection方法。
If you are using the VCL Data components (TSQLQuery, TSQLStoredProc, etc…) on your Server DataModules, the onCreate event is a good place to associate the DataSets with the connection, using the following code.
如果您在服务器上DataModules使用VCL的数据组件(TSQLQuery,TSQLStoredProc等...),
在OnCreate事件是一个设置关联数据集的连接的好地方,可以使用下面的代码来设置。
procedure TServerContainer1.SetConnection(Conn: TSqlConnection);
var
i: integer;
begin
if Conn = nil then
Conn := GetConnection;
else
Conn := Sender;
for i := 0 to ComponentCount - 1 do
if Componentsis TSQLQuery then
TSQLQuery(Components).SQLConnection := Conn;
end;
为了避免数据库连接泄漏,我们实现了DSServer的OnDisconnect事件。当客户端断开连接时这段持续将运行。
if GetConnection nil then
GetConnectio
您可能关注的文档
- 个人银行账户管理程序(Account).ppt
- 牛津译林 模块七第一单元 M7U1 wel+reading (语言点).ppt
- 专四 动词辨析.ppt
- 微处理器结构与设计--第13次课-2013-05-29_400107128.ppt
- RS240 安装手册 V1.0.pdf
- M5U3_Word_power优质课.ppt
- 人教版高中英语语法:名词性从句.ppt
- 新视野大学英语3(第二版)读写教程unit1授课教学ppt.ppt
- 如何写作完美的雅思大作文开头.pdf
- No_matter用法.ppt
- 国际财务报告准则-9号 金融工具.docx
- Lesson 3 They are in Class Three.第7课时.doc
- 大学英语自主学习视听说答案.docx
- 新概念3Lesson 20.pptx
- Lesson Three Legal Education 法律教育.docx
- earlier before ago区别 2015年高考卷(全国1)语法填空A few hours 62___ (earlier before).docx
- score的用法.ppt
- 剑桥预备级下 Unit15 He’s got three sticks.doc
- java中throws的使用问题.docx
- Swales’ Three-Move Model for Introductions.doc
最近下载
- 2025年新改版教科版五年级上册科学全册精编知识点(新编辑).pdf
- 小学《羽毛球社团》教案(36页) .pdf VIP
- 晶体的点阵结构和晶体的性质.ppt VIP
- 体检中心运用PDCA降低体检中心体检者漏检率品管圈成果汇报书.docx VIP
- 《中国近现代史纲要(2023版)》课后习题答案汇编.docx VIP
- 二氧化碳的高值有效封存利用课件.pptx VIP
- 印花助剂及其应用.pptx VIP
- 海康威视IP SANNAS监控存储解决方案_模版 .pdf VIP
- 第一单元第2课《国色之韵》课件 2025 人教版初中美术八年级上册.ppt
- Q_370705WAD008-2019混合型饲料添加剂氯化铵企业标准.pdf
文档评论(0)