zoukankan      html  css  js  c++  java
  • FireDAC数据连接池设置

    先来学习一下基础,此文是官方发布的,园子有个兄弟翻译的https://www.cnblogs.com/Thenext/p/9715271.html

     一.Defining Connection (FireDAC)(连接定义)

     连接定义就是应用程序使用特定的FireDAC驱动连接数据库的参数集合。相当于BDE的别名,ADO的UDL,或者ODBC的DSN。

    For the list of supported database management systems and corresponding parameters, see FireDAC Database Connectivity.

    FireDAC支持三种连接定义:

    FireDAC支持三种连接定义:

    Type

    Description

    Pros

    Cons

    Persistent

    固定连接

     

    1.有个唯一名称,

    2.由FDManager负责管理,

    3.保存在一个连接定义文件中。

    可能定义一次并在多个应用程序中交叉重复使用。可以被用于连接池

    (server address, DB name, 等)参数公共可见并且可能随时改变。FDManager必须重新激活或者重启IDE以使新加的连接定义在设计时可见.

    Private

    私有连接

    1.有个唯一名称,

    2.由FDManager负责管理,

    3.不保存在连接定义文件中。

    定义连接的参数在应用程序之外不可见。可用于连接池。

    当每个程序重启后,应用程序需要建立个私有连接,其它程序不能共享。不能在设计时建立.

    Temporary

    临时连接

    1.没有唯一名称,

    2.不由FDManager管理

    3.不保存在连接定义文件中。

    最简易建立连接定义的方法,通过填写 TFDConnection.Params 属性来完成. 可以在设计时通过TFDConnection component editor 输入参数来完成连接定义.

    私有连接简单,不能用名称引用,不能用于连接池。

    Connection Definition File

    固定连接保存在一个外部文件 - 连接定义文件中。

    此文件是标准的INI文本文件,可首先选择用 FDExplorer 或 FDAdministrator 实用程序来编辑, 也可手动或用代码来编辑。. 系统默认文件是C:UsersPublicDocumentsEmbarcaderoStudio14.0FireDACFDConnectionDefs.ini.

    注意:当你使用 FDExplorer or FDAdministrator 建立一个固定连接,且当RAD Studio IDE 运行中, 会看不到 FireDAC 设计时代码. 要刷新连接定义列表,你需要重启 FDManager 或 RAD Studio IDE.

    Sample content of this file:

    [Oracle_Demo]

    DriverID=Ora

    Database=ORA_920_APP

    User_Name=ADDemo

    Password=a

    MetaDefSchema=ADDemo

    ;MonitorBy=Remote

     

    [MSSQL_Demo]

    DriverID=MSSQL

    Server=127.0.0.1

    Database=Northwind

    User_Name=sa

    Password=

    MetaDefSchema=dbo

    MetaDefCatalog=Northwind

    MonitorBy=Remote

    应用程序可在 FDManager.ConnectionDefFileName 属性中指定连接定义文件名.

     FireDAC 在下面位置搜索连接定义文件:

    ·指定了连接定义文件名:

    ·文件名不带路径时,在应用程序文件夹下搜索该文件名。

    ·带路径的文件名则直接搜索它。

    ·没有指定连接定义文件名:

    ·在应用程序文件夹中搜索FDConnectionDefs.ini 文件。

    ·如果文件没有找到,则搜索 HKCUSoftwareEmbarcaderoFireDACConnectionDefFile. 默认是 C:UsersPublicDocumentsEmbarcaderoStudio14.0FireDACFDConnectionDefs.ini.

    注意: 在设计时期 FireDAC 忽略  FDManager.ConnectionDefFileName的值, 只在RAD Studio Bin 文件夹或registry指定位置寻找, 如果找不到文件,抛出异常。

    如果FDManager.ConnectionDefFileAutoLoad 为 True, 自动调用连接定义文件,否则,必须在第一个连接定义信息使用之前用FDManager.LoadConnectionDefFile方法来调用文件。例如设定TFDConnection.Connected 为 True之前.

    Creating a Persistent Connection Definition

    建立固定连接定义

    可以使用 FDExplorer or FDAdministrator建立固定连接定义。 这是如何在代码中实现。可以看例子 FireDACSamplesComp LayerTFDConnectionConnectionDefs.

    下面代码段建立一个名为 "MSSQL_Connection"的连接定义,带所有所需参数连接到 Microsoft SQL Server 本地连接, 使用了 OS authentication (SSPI):

    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;

    FDManager 在 FireDAC连接管理中是一个全局对象. 其属性 FDManager.ConnectionDefs: IFDStanConnectionDefs 是在固定连接和私有连接中的一个集合。 AddConnectionDef 方法添加一个新连接定义。 MarkPersistent 方法标记连接定义为固定连接定义。 Apply 方法保存连接定义到连接定义文件中。没有调用MarkPersistent ,表示是私有连接定义。.

    Creating a Private Connection Definition

    私有连接定义只能用代码建立。和上面的代码类似,只是不必调用MarkPersistent 即可。

    Also, you can use a technique similar to BDE:

    你也可类似BDE的使用方法:

    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;

    Creating a Temporary Connection Definition

    临时连接可以在设计期用FireDAC Connection Editor来建立. 双击 TFDConnection 即可打开:

     

    Or at run time in code by filling the TFDConnection.Params property.

    或者在运行时填充参数,这是最简单的建立连接定义的方法。

    FDConnection1.DriverName := 'MSSQL';

    FDConnection1.Params.Add('Server=127.0.0.1');

    FDConnection1.Params.Add('Database=Northwind');

    FDConnection1.Params.Add('User_name=sa');

    FDConnection1.Connected := True;

    另外的选择是在设计期指定一个连接字符串,填到 TFDConnection.ConnectionString 属性。 A connection string may be a convenient way to specify connection definition parameters for certain types of applications. 在应用程序已知类型的连接参数情况下,使用连接字符串定义连接会是一个不错的方法。For example:

    FDConnection1.ConnectionString := 'DriverID=MSSQL;Server=127.0.0.1;Database=Northwind;User_name=sa';

    FDConnection1.Connected := True;

    Editing a Connection Definition

    应用程序可能需要在运行时使用标准FireDAC编辑对话框建立和编辑连接定义的能力,来编辑保存在TFDConnection中的临时连接定义,使用以下代码::

    uses

      FireDAC.VCLUI.ConnEdit;

    ...

    if TfrmFDGUIxFormsConnEdit.Execute(FDConnection1, '') then

      FDConnection1.Connected := True;

    To edit a connection definition represented as a FireDAC connection string, use the code:

    uses

      FireDAC.VCLUI.ConnEdit;

    ...

    var

      sConnStr: String;

    ...

    sConnStr := FDConnection1.ResultConnectionDef.BuildString();

    if TfrmFDGUIxFormsConnEdit.Execute(sConnStr, '') then begin

      FDConnection1.ResultConnectionDef.ParseString(sConnStr);

      FDConnection1.Connected := True;

    end;

     

    [cpp] view plain copy
     
    1. #include <FireDAC.VCLUI.ConnEdit.hpp>  
    2.   
    3.   
    4.   TfrmFDGUIxFormsConnEdit * f = new TfrmFDGUIxFormsConnEdit(this);  
    5.   String sConnStr = DSServerModule1->FDConnection1->ResultConnectionDef->BuildString();  
    6.   
    7. if(f->Execute(sConnStr, ""))  
    8. {  
    9.   DSServerModule1->FDConnection1->ResultConnectionDef->ParseString(sConnStr);  
    10.   DSServerModule1->FDConnection1->Connected = True;  
    11. }  

      

    FireDAC 连接池配置过程 https://blog.csdn.net/zcpxieqing/article/details/50033633

    1、先建一个数据库的文本参数文件,文件名FDDrivers.ini,存放在执行文件所在目录,内容以oracle为例如下:

    [Oracle_Pool]
    DriverID=Ora
    Database=(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.1.220)(PORT = 1521)))(CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = orcl)))
    User_Name=test
    Password=test
    CharacterSet=UTF8
    Pooled=true

    这里Pooled=true是不能少的,是连接池里的关键设置哦

    2、在数据模块里,放置FDManager1控件,并将其ConnectionDefFileName指向FDDrivers.ini文件,如D:FDmanagerWin32DebugFDDrivers.ini,并把Active设为true

    3、在数据模块里里,放置FDPhysOracleDriverLink,并将其VenderLib指向oracle的库文件D:FDmanagerWin32Debugoci.dll,这里要说明的是,需要四个库文件:

    oci.dll,oraocci11.dll,,oraociei11.dll,orasql11.dll,这些文件全部都放在执行文件所在目录。

    4、还要放置FDGUIxWaitCursor在数据模块里

    5、放置数据库连接控件FDConnection,在数据模块里,并将其ConnectionDefName指定为FDDrivers.ini文件中的第一行中的名称,可以下拉选的

    6、这样设置好后,在窗口代码里,就可以按如下调用:

    procedure Tfrm1.Button2Click(Sender: TObject);
    begin
     if not dm.FDConnection1.Connected then
       dm.FDConnection1.Connected := True;
       with dm.FDQuery2 do
       begin
           close;
           sql.Clear;
           sql.Add('select count(*) num from base_tab ');
           open;
       end;
       Label2.Text:=dm.FDQuery2.FieldByName('num').AsString;
        dm.FDConnection1.Connected := False;

    end;

    注意,这里的dm.FDConnection1.Connected := True就是在连接池里获取一个连接,而dm.FDConnection1.Connected := False;则是归还一个连接,不是断开,

    两文看完,基本大功告成,但是不是知道是 FireDac 连接是不是设计有问题,如果在设置了FDConnection.ConnectionDefNam的值并成功获取值后就无法连接了,

    以下是我在实际使用中成功连接的过程:

    1.添加一个FDConnection和FDManager

    2.配置连接文件:以下是我的ini文件

       

    [MYSQL_Demo]
    DriverID=MySQL
    Server=127.0.0.1
    Database=pdb
    User_Name=root
    Password=
    Pooled=True
    server=localhost
    port=3306
    CharacterSet=UTF8  //不设置有可能显示乱码

    2.设置FDManager 以上是在属性窗口上设置

     FDManager.connectionDefFileName:=XXX.ini   //ini文件名先设置为绝对路径,不然有可能无法找到配置,调式确定后再删除路径,只留文件名

    FDManager.Active:=True   打开管理组件

    3.设置FDConnection

      FDConnection.connectionDefName=MYSQL_Demo    //连接配置文件中的连接名

    4.测试连接

     1-3步后,FDConnection已经从FDManager中自动获取并设置了自己的连接参数,这时最好不要去手动再进行修改,一但进行了修改可能无法连接,至少我修改了马上就不能连接了。

    双击FDConnection,一般不需要更改,因为参数都是从配置文件中读取的,要修改就要修改配置文件,点 TEST,如果连接成功,点OK。

    5.再回到IDE,添加 FDPhysMySQLDriverLink1 FDGUIxWaitCursor1 FDQuery ,执行查询 成功连接

  • 相关阅读:
    unp.h
    美拍视频下载
    动态加载ajax 腾讯视频评论
    已知二叉树的先序,中序遍历,求后续遍历

    JSP九大内置对象及四个作用域
    转换数据库连接池为hikaricp
    JSP Tomcat8.0运行连接池时发生异常【AbstractMethodError oracle.jdbc.driver.T4CConnection.isValid(I)Z】
    tomcat启动时出现There are no resources that can be added or removed from the server
    java.lang.ClassNotFoundException:org.springframework.web.context.ContextLoaderListener问题解决
  • 原文地址:https://www.cnblogs.com/carcode/p/13126825.html
Copyright © 2011-2022 走看看