使用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) ...
随机推荐
- 拍照返回的bitmap太小
private void doPhoto(int requestCode) { if(!Environment.getExternalStorageState().equals(Environment ...
- FindStringExact
Code:: CComboBox::FindStringExact int FindStringExact( int nIndexStart, LPCTSTR lpszFind ) con ...
- cocos2dx 3.1创建工 mac
1.下载cocos2dx 3.1版本号 2.打开终端,cd 进入 cocos2d-x-3.1.1/tools/cocos2d-console/bin 3.cocos new game -p com.t ...
- [Javascript] bukld 'SQL' like object tree
Let's try creating a deeper tree structure. This time we have 4 separate arrays each containing list ...
- iOS9.0之后不支持http请求解决方案
打开info.plist文件,添加关键字 NSAppTransportSecurity 类型 Dictionary 在 NSAppTransportSecurity 下添加关键字 NSAllowsAr ...
- C#的语句
什么是语句?语句可以是以分号结尾的单行代码,或者是语句块中的一系列单行语句.语句块括在括号 {} 中,并且可以包含嵌套块. 1,语句的类型 (1)声明语句 声明语句主要是引入新的变量和常量.变量的声明 ...
- Css3动画库收集
1.animate.css – 齐全的CSS3动画库 http://www.dowebok.com/98.html 2.Angular官方动画库 http://augus.github.io/ngAn ...
- Click ListView Item跳转Activity
今天学习了ListView点击Item跳转,修改上一篇代码bindData方法 lv.setOnItemClickListener(new OnItemClickListener() { public ...
- 20160410javaweb 开发小案例 --客户管理系统
客户管理系统---体验基于数据库javaweb的增删改查 添加客户 查询客户列表 修改客户信息 删除客户 条件查询客户信息 分页查询客户 javaee的经典三层架构--工厂类实现解耦 jsp+serv ...
- WildFly 9.0.2+mod_cluster-1.3.1 集群配置
一.配置背景 最近使用WildFly 9.0.2作为中间件开发系统,给客户不熟的时候需要使用集群来进行负载均衡,一开始想到是使用Nginx.但是只通过Nginx使用 ip_hash 模式没有做到ses ...