使用Unidac内置连接池

第一步:
放一个TUniconnection并设置相关属性
之后直接使用TUniconnection对象即可
跟踪unidac源码uni单元1540行中可以看到
Connect方法调用CreateIConnection
procedure TUniConnection.CreateIConnection;
var
Connection: TCRConnection;
ConnectionParameters: TCRConnectionParameters; procedure SetSpecificObjectProps(SetAllProps: boolean);
begin
FProvider.SetObjectProps(Connection, FSpecificOptions.Values, SetAllProps);
FSpecificOptions.IsModified := False;
end; begin
CheckProvider; Connection := FIConnection; if Connection = nil then begin
if Pooling and FProvider.IsPoolingSupported then begin
ConnectionParameters := FProvider.GetConnectionParametersClass.Create;
try
ConnectionParameters.MinPoolSize := PoolingOptions.MinPoolSize;
ConnectionParameters.MaxPoolSize := PoolingOptions.MaxPoolSize;
ConnectionParameters.ConnectionLifeTime := PoolingOptions.ConnectionLifetime;
ConnectionParameters.Validate := PoolingOptions.Validate;
ConnectionParameters.Username := Username;
ConnectionParameters.Password := Password;
ConnectionParameters.Server := Server;
ConnectionParameters.IOHandler := FIOHandler;
ConnectionParameters.OnError := DoError;
if FProvider.IsDatabaseSupported then //upd1
ConnectionParameters.SetProp(prDatabase, FDatabase);
if FProvider.IsPortSupported then
ConnectionParameters.SetProp(prPort, Port); FProvider.SetObjectProps(ConnectionParameters, SpecificOptions, True); Connection := FProvider.GetConnectionPoolingManagerClass.GetConnection(
ConnectionParameters, TUniSQLMonitor);
finally
ConnectionParameters.Free;
end;
end
else begin
Connection := GetIConnectionClass.Create;
Connection.IOHandler := FIOHandler;
if FProvider.IsDatabaseSupported then
Connection.SetProp(prDatabase, FDatabase);
if FProvider.IsPortSupported then
Connection.SetProp(prPort, Port);
end; Connection.SetProp(prDisconnectedMode, Options.DisconnectedMode);
Connection.SetProp(prEnableBCD, Options.EnableBCD);
{$IFDEF VER6P}
{$IFNDEF FPC}
Connection.SetProp(prEnableFMTBCD, Options.EnableFMTBCD);
{$ENDIF}
{$ENDIF}
Connection.SetProp(prDefaultSortType, Variant(Options.DefaultSortType));
// if connection is just created we need to set all options
SetSpecificObjectProps(True); SetIConnection(Connection);
end; if FSpecificOptions.IsModified then
SetSpecificObjectProps(False);
end;
使用Unidac内置连接池的更多相关文章
- Java第三方数据库连接池库-DBCP-C3P0-Tomcat内置连接池
连接池原理 数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”.预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去.我们可以通过设定连接池 ...
- 开源数据库连接池之Tomcat内置连接池
本篇介绍几种开源数据库连接池,同时重点讲述如何使用Tomcat服务器内置的数据库连接池. 之前的博客已经重点讲述了使用数据库连接池的好处,即是将多次创建连接转变为一次创建而使用长连接模式.这样能减少数 ...
- 线程池的极简用法——内置线程池multiprocessing
大家好,今天博主来分享一个线程池的小捷径--内置线程池的使用方法 一.背景 说道多线程,对变成层有了解的小伙伴一定不陌生,虽然不知道是什么但是也会从各大网站.面试分享等途径听说过.这里就不做过多的介绍 ...
- java内置线程池ThreadPoolExecutor源码学习记录
背景 公司业务性能优化,使用java自带的Executors.newFixedThreadPool()方法生成线程池.但是其内部定义的LinkedBlockingQueue容量是Integer.MAX ...
- 为什么阿里Java规约禁止使用Java内置线程池?
IDEA导入阿里规约插件,当你这样写代码时,插件就会自动监测出来,并给你红线提醒. 告诉你手动创建线程池,效果会更好. 在探秘原因之前我们要先了解一下线程池 ThreadPoolExecutor 都有 ...
- Java 四种内置线程池
引言 我们之前使用线程的时候都是使用 new Thread 来进行线程的创建,但是这样会有一些问题 每次 new Thread 新建对象性能差 线程缺乏统一管理,可能无限制新建线程,相互之间竞争,及可 ...
- jdbc事务处理和连接池
JDBC: * JDBC概念:Java DataBase Connectivity(Java数据库连接) SUN公司提供的一组连接数据库API. * JDBC开发步骤: * 1.注册驱动. * 2.获 ...
- JdbcTemplae使用入门&&Spring三种连接池配置&&Spring配置文件引用外部properties文件
JdbcTemplate的使用 Spring为了各种支持的持久化技术,都提供了简单操作的模版和回调. JdbcTemplate 简化 JDBC 操作HibernateTemplate 简化 Hiber ...
- mongoDB中的连接池(转载)
一.mongoDB中的连接池 刚上手MongoDB,在做应用时,受以前使用关系型数据库的影响,会考虑数据库连接池的问题! 关系型数据库中,我们做连接池无非就是事先建立好N个连接(connection) ...
随机推荐
- Ubuntu 12.04 wine QQ
1.首先安装最新版的wine1.52,没记错版本号应该是这个 sudo add-apt-repository ppa:ubuntu-wine/ppa sudo apt-get update sudo ...
- C++ Combobox输入时自动完成
Combobox 在输入时自动完成 关键点 实现过程 BOOL m_bAuto; BOOL CProject02Dlg::PreTranslateMessage(MSG* pMsg) { i ...
- mysql 索引优化
http://blog.jobbole.com/87107/ http://www.phpben.com/?post=74 http://blogread.cn/it/article/4088?f=s ...
- systemtap 列出所有linux 内核模块与相关函数0
diskiohttp://blog.163.com/digoal%40126/blog/static/16387704020131015105532435/ [root@localhost linux ...
- Android(java)学习笔记161:Framework运行环境之启动SystemServer进程
SystemServer进程是zygote孵化出的第一个进程,该进程是从ZygoteInit.java的main函数中调用startSystemServer()开始的.与启动普通进程的差别 ...
- 匹配url - 正则表达式
/^\/(.+)\/$/g.exec(req.url)
- Linux基础命令(三)
一.常用命令—文件目录类命令 1.ls 列出指定或默认目录的文件信息 使用形式: ls [选项] [目录名] 实例: $ls $ls –als $ls /home/sq/Desktop $ls ./D ...
- thinkphp中关于rbac的两个session
最近在做单点登录,需要session由sso的client生成.所以研究了下RBAC的类的代码. 有了这两个seesion就可以用rbac进行权限验证 $_SESSION[C('ADMIN_AUTH_ ...
- Magento模型和ORM基础
对于任何一个MVC架构,模型(Model)层的实现都是占据了很大一部分.对于Magento来说,模型占据了一个更加重要的位置,因为它常常包含了一部分商业逻辑代码(可以说它对,也可以说它错).这些代码在 ...
- Visual Basic|VB 6.0中文版
附加下载链接:http://xiazai.zol.com.cn/detail/3/29939.shtml?&437886-tsina-1-838-a507c04d8e448a55dd65bfc ...