FIREDAC FDConnection 连接池 连接串
一、FDConnection 连接池
http://docs.embarcadero.com/products/rad_studio/firedac/frames.html?frmname=topic&frmfile=Defining_Connection.html
http://docwiki.embarcadero.com/RADStudio/XE8/en/Defining_Connection_%28FireDAC%29
http://docwiki.embarcadero.com/RADStudio/Berlin/en/Multithreading_(FireDAC)
FDManager()->ConnectionDefs->ConnectionDefByName("")
FDManager.ConnectionDefs.ConnectionDefByName(cbDB.Text).Params.Pooled := True
oConn.ConnectionDefName;
FDConnection1->Params->Pooled;
$(FDHOME)\FDConnectionDefs.ini
D:\Users\Public\Documents\Embarcadero\Studio\FireDAC\FDConnectionDefs.ini
D:\Users\Public\Documents\Embarcadero\Studio\16.0\Samples\Object Pascal\Database\FireDAC\Samples\Comp Layer\TFDConnection\Pooling
从这个官方例子看出使用连接池比不使用连接池的效率提高4倍。
http://www.cnblogs.com/zhenfei/p/4105515.html
1)FDConnectionDefs.ini文件
[MSSQL_Demo]
DriverID=MSSQL
Server=127.0.0.1
Database=Northwind
User_Name=sa
Password=
MetaDefSchema=dbo
MetaDefCatalog=Northwind
ExtendedMetadata=True
以上代码存为FDConnectionDefs.ini文件放到当前exe目录下,程序会自己找到。小节名称与ConnectionDefByName参数一致。
this->FDManager1->ConnectionDefFileName = "FDConnectionDefs.ini";
this->FDManager1->ConnectionDefs->ConnectionDefByName("MSSQL_Demo")->Params->Pooled = true;
考虑到安全性,密码需要加密,所以建议用方法2或3。
2)代码动态创建IFDStanConnectionDef
uses
FireDAC.Comp.Client, FireDAC.Stan.Intf;
var
oDef: IFDStanConnectionDef;
begin
oDef := FDManager.ConnectionDefs.AddConnectionDef;
oDef.Name := 'MSSQL_Connection';
oDef.DriverID := 'MSSQL';
oDef.Server := '127.0.0.1';
oDef.Database := 'Northwind';
oDef.OSAuthent := True;
oDef.MarkPersistent;
oDef.Apply;
.....................
FDConnection1.ConnectionDefName := 'MSSQL_Connection';
FDConnection1.Connected := True;
3)连接参数
var
oParams: TStrings;
begin
oParams := TStringList.Create;
oParams.Add('Server=127.0.0.1');
oParams.Add('Database=Northwind');
oParams.Add('OSAuthent=Yes');
FDManager.AddConnectionDef('MSSQL_Connection', 'MSSQL', oParams);
.....................
FDConnection1.ConnectionDefName := 'MSSQL_Connection';
FDConnection1.Connected := True; c++ FDManager()->AddConnectionDef("", "", para);
其他
FDManager.ConnectionDefFileName := ExtractFilePath(Application.ExeName) + 'myconndef.ini';
FDManager.ConnectionDefFileAutoLoad := True;
oConn := TFDConnection.Create(nil);
oConn.ConnectionDefName := 'myconn';
oConn.Connected := True;
Create Connection def
void __fastcall TForm35::Button5Click(TObject *Sender)
{
TStrings *para;
para = new TStringList();
para->Add("Server=192.168.1.1");
para->Add("Database=db");
para->Add("User_Name=sa");
para->Add("Password=123"); FDManager()->AddConnectionDef("sqlPTT", "MSSQL", para); FDConnection1->ConnectionDefName = "sqlPTT";
Label1->Caption = this->FDConnection1->ResultConnectionDef->BuildString();
delete para; int startTime = GetTickCount();
for (int i = ; i < ; i++)
{
this->Button1->Click();
}
Caption = (GetTickCount() - startTime) / 1000.0;
}
use pool
void __fastcall TForm35::Button1Click(TObject *Sender)
{
TFDConnection *con;
con = new TFDConnection(NULL);
con->ConnectionDefName = FDConnection1->ConnectionDefName; TFDQuery *qry;
qry = new TFDQuery(NULL);
qry->Connection = con;
qry->SQL->Text = "select count(*) from tt";
qry->Open();
con->Close(); delete con;
delete qry; }
连接池比普通连接块4倍!
连接字符串ConnectString
mssql带端口号
Server={127.0.0.1,9433};User_Name=sa;;Password=123;Database=dbname;DriverID=MSSQL
Name=Unnamed;Database=mydb;User_Name=sa;Password=123;Server=127.0.0.1;DriverID=MSSQL
FDConnection1.ConnectionString := 'DriverID=MSSQL;Server=127.0.0.1;Database=Northwind;User_name=sa;Password=123;';
Database=car;User_Name=sa;Password=;Server=127.0.0.1,9433;DriverID=MSSQL mysql
Database=testdata;User_Name=root;Password=root;Server=127.0.0.1;DriverID=MySQL;CharacterSet=utf8 sqlite:
Database=D:\msdb.db;DriverID=SQLite 执行十条sql语句性能比较。
1、一个连接打开,不关闭,耗时0.184ms
2、使用连接池,耗时0.265ms
3、不使用连接池,0.71ms
oracle连接字符串ip地址输入10.0.0.2:1521/orcl FDConnection1.Params.DriverID:='SQLite';
FDConnection1.Params.Database := 'Demo.db'; 以前ADO连接
ADOConstr = PromptDataSource(0, ADOConnection1->ConnectionString); DBF连接串
Provider = Microsoft.Jet.OLEDB.4.0 ;Data Source ={0};Extended Properties=dBASE IV SQLite连接字符串
Name=Unnamed;Database=E:\Bin\posdata.sqlite;DriverID=SQLite
MYSQL连接串
Name=Unnamed;Database=tData;User_Name=root;Password=root;Server=127.0.0.1;DriverID=MySQL;CharacterSet=utf8;Port=3306 ADO连接字符串
Provider=SQLOLEDB.1;Password=123;Persist Security Info=True;User ID=sa;Initial Catalog=mydb;Data Source=127.0.0.1
--ORACLE
DriverID=Ora
Database=(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = orcl)))
User_Name=DI_EHR
Password=neusoft
AuthMode=Normal
CharacterSet=UTF8
FIREDAC FDConnection 连接池 连接串的更多相关文章
- node 连接MySQL及其分装, 连接池连接
const mysql = require('mysql') const config = require('./../../config/config.default') var connectio ...
- JNDI连接池连接Oracle数据库
今天做了一个评论的小功能,要求用JNDI连接池连接Oracle数据库,以前只是测试了是否连接的上,现在没想到一个JNDI连接池连接Oracle数据库,纠结了好久,原来都是Oracle数据库的问题,这是 ...
- python通过连接池连接redis,操作redis队列
在每次使用redis都进行连接的话会拉低redis的效率,都知道redis是基于内存的数据库,效率贼高,所以每次进行连接比真正使用消耗的资源和时间还多.所以为了节省资源,减少多次连接损耗,连接池的作用 ...
- spring boot配置druid连接池连接mysql
Spring Boot 集成教程 Spring Boot 介绍 Spring Boot 开发环境搭建(Eclipse) Spring Boot Hello World (restful接口)例子 sp ...
- 记录关于使用ADO.NET 连接池连接Oracle时Session信息不更新的坑
最近的一个项目中,由于界面查询的数据量比较大,关联的表比较多,有些数据查出来需要临时保存起来供后面的查询使用,于是想到了用oracle的临时表来实现这个需求.大家都知道,oracle的临时表有两种:事 ...
- Java创建连接池连接不同数据库
在一个应用里面,可能涉及到连接多个不同数据库进行操作,而每次连接写不同的实现会很麻烦.前面已经会了用JDBC连接数据库,那么利用反射和工厂模式,可以实现连接不同的数据库,这样处理起来将会很方便.同时建 ...
- Mybatis 搭配 阿里druid连接池 连接 oracle 或 mysql
DRUID介绍 DRUID是阿里巴巴开源平台上一个数据库连接池实现,它结合了C3P0.DBCP.PROXOOL等DB池的优点,同时加入了日志监控,可以很好的监控DB池连接和SQL的执行情况,可以说是针 ...
- 使用BasicDataSource连接池连接oracle数据库报错ORA-12505
先看连接池配置: <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" ...
- 关于c3p0连接池连接mysql数据库需要注意的几点
什么是数据库连接池: 用池来管理Connection,这可以重复使用Connection.有了池,所以我们就不用自己来创建Connection,而是通过池来获取Connection对象. 当使用完Co ...
随机推荐
- [POJ2002]Squares(计算几何,二分)
题目链接:http://poj.org/problem?id=2002 给定一堆点,求这些点里哪些点可以构成正方形,题目给定n<=1000,直接枚举四个点是肯定会超时的,因此要做一些优化. 有公 ...
- CSS的display属性
网页设计中最常用的标签p.div.h1-h6(默认为块级元素),span(默认为内联元素) 内联,内嵌,行内属性标签: 1.默认同行可以继续跟同类型标签: 2.内容撑开宽度 3.不支持宽高 4.不支持 ...
- ORG 07C00H的意思
简单说来,该指令用来修正该指令以后出现的(变量/标志的)内存地址,也就是说如果有ORG 0x12345h,那么在该指令以后的变量的地址将被修正为0x12345+old_addr.对于DOS中的COM文 ...
- css去掉a标签点击后的虚线框
outline是css3的一个属性,用的很少. 声明,这是个不能兼容的css属性,在ie6.ie7.遨游浏览器都不兼容. outline控制的到底是什么呢? 当聚焦a标签的时候,在a标签的区域周围会有 ...
- dede 首页调用单页->栏目内容
{dede:sql sql='Select content from dede_arctype where id=47'} [field:content/] {/dede:sql}
- HDU5463 Clarke and minecraft
解题思路:此题刚开始,觉得好繁琐,好混乱,理清思路后,发现很简单. 具体见代码分析. #include<cstdio> #include<cstring> #include ...
- 【英语】Bingo口语笔记(29) - Run系列
- Java 中无参带返回值方法的使用
如果方法不包含参数,但有返回值,我们称为无参带返回值的方法. 例如:下面的代码,定义了一个方法名为 calSum ,无参数,但返回值为 int 类型的方法,执行的操作为计算两数之和,并返回结果 在 c ...
- linux下ubuntu系统安装及开发环境配置
1.安装系统:别的没什么说的,就是安的时候把网线拔了,不然到 configure apt的时候会卡起很久不走的2.配置网络 编辑/etc/network/interface打开/etc/networt ...
- 1、c#中可以有静态构造方法,而java中没有,例如在单例模式中c#可以直接在静态构造中实例化对象,而java不可以
1.c#中可以有静态构造方法,而java中没有,例如在单例模式中c#可以直接在静态构造中实例化对象,而java不可以