Delphi 中 FireDAC 数据库连接(定义连接)

news2024/11/18 23:46:17

一、定义连接(FireDAC)

  1. 概述

连接定义是一组参数,它定义了如何使用特定的FireDAC驱动将一个应用程序连接到DBMS。它相当于一个BDE别名、ADO UDL(存储的OLEDB连接字符串)或ODBC数据源名称(DSN)。关于支持的数据库管理系统和相应的参数列表,见FireDAC数据库连接。

FireDAC支持3种连接定义:

Type

Description

Pros

Cons

持久型

Persistent

有一个唯一的名字,由FDManager管理,并存储在一个连接定义文件中。

可以一次性定义并在许多应用中重复使用。可以集中使用(连接池)。

这些参数(服务器地址、数据库名称等)是公开的,并且可能会被修改。

是公开可见的,可能会被偶然地改变。

FDManager必须被重新激活或Delphi IDE必须被重新启动以使新添加的定义在设计时可见。

私有型

Private

有一个唯一的名字,由FDManager管理,但不存储在连接定义文件中。

连接定义参数在应用程序 "外部 "不可见。可能会被集中起来。

应用程序需要在每个程序重新启动后创建一个私人连接定义,并且不能与其他程序共享它。程序共享。

不能在设计时创建。

临时型

Temporary

没有名字,没有存储在连接定义文件中,也没有被FDManager管理。

创建一个连接定义的最简单方法是填写TFDConnection.Params 属性。可以在设计时使用TFDConnection组件编辑器来创建。

与私有型类似。也不能通过名称来引用,也不能被汇集。

  1. 连接定义文件

持久的连接定义存储在一个外部文件中--连接定义文件。这个文件是标准的INI文本文件格式。它可以由 FDExplorer 或 FDAdministrator 实用程序首先手动编辑,或通过代码编辑。默认情况下,该文件是C:\Users\Public\Documents\Embarcadero\Studio\FireDAC\FDConnectionDefs.ini。

注意:
如果你在RAD Studio IDE运行时使用FDExplorer或FDAdministrator添加一个新的持久性连接定义,它对FireDAC设计时代码是不可见的。要刷新持久性连接定义列表,你需要重新激活FDManager或重新启动RAD Studio IDE。

这个文件的内容样本如下:

[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在以下地方搜索连接定义文件:

  • 如果指定了ConnectionDefFileName:

  1. 搜索一个没有路径的文件名,然后在应用程序EXE文件夹中寻找它。

  1. 否则就使用指定的文件名。

  • 如果没有指定ConnectionDefFileName:

  1. 在一个应用程序EXE文件夹中寻找FDConnectionDefs.ini。

  1. 如果没有找到上述文件,请寻找注册表键HKCU\Software\Embarcadero\FireDAC\ConnectionDefFile中指定的文件。默认是C:\Users\Public\Documents\Embarcadero\Studio\FireDAC\FDConnectionDefs.ini。

注意:
在设计时,FireDAC会忽略FDManager.ConnectionDefFileName的值,并在RAD Studio Bin文件夹中或在注册表中指定的位置寻找一个文件。如果没有找到该文件,就会产生一个异常。

如果FDManager.ConnectionDefFileAutoLoad为True,连接定义文件会自动加载。否则,在第一次使用连接定义之前,必须通过调用FDManager.LoadConnectionDefFile方法显式加载它。例如,在设置TFDConnection.Connected为True之前。

  1. 创建持久性连接的定义

一个持久的连接定义可以用FDExplorer或FDAdministrator创建。这里是你如何在代码中做到这一点。也请看演示的连接定义。

下面的代码片段创建了一个名为 "MSSQL_Connection "的连接定义,它具有连接到本地运行的Microsoft SQL Server所需的所有参数,使用操作系统认证(SSPI)。

uses
 FireDAC.Comp.Client, FireDAC.Stan.Def, FireDAC.Stan.Intf,
 // Required uses for creating a persistent connection with MSSQL (to fdconnectiondefs.ini)
 FireDAC.Phys.MSSQL,
 FireDAC.Phys.MSSQLDef;

const
 cNameConnDef = 'MSSQL_Connection';

procedure TForm1.PersistentConnectionClick(Sender: TObject);
 var
  oDef: IFDStanConnectionDef;
  oParams: TFDPhysMSSQLConnectionDefParams; // MSSQL connection params
 begin
  // Adding new persistent connection to fdconnectiondefs.ini
  FDManager.ConnectionDefs.AddConnectionDef;
  oDef := FDManager.ConnectionDefs.AddConnectionDef;
  oDef.Name := cNameConnDef;
  oParams := TFDPhysMSSQLConnectionDefParams(oDef.Params);
  oParams.DriverID := 'MSSQL'
  oParams.Database := 'Northwind';
  oParams.UserName := '.............';
  oParams.Password := '.............';
  oParams.Server := '127.0.0.1';
  oParams.OSAuthent := false;
  oParams.MARS := false;
  oDef.MarkPersistent;
  oDef.Apply;
end;

.....................

procedure TForm1.ConnectionClick(Sender: TObject);
  FDConnection1.ConnectionDefName := cNameConnDef;
  FDConnection1.Connected := True;
end;

FDManager是一个FireDAC连接管理器的全局实例。它的属性IFDStanConnectionDefs是一个持久化和私有化连接定义的集合。AddConnectionDef方法添加一个新的连接定义。MarkPersistent方法标记一个连接定义为持久化。Apply方法将一个连接定义保存到一个连接定义文件中。如果没有MarkPersistent的调用,连接定义是私有的。

4. 创建一个私有连接的定义

只有在代码中才能创建一个私有连接定义。下面代码与上面的代码相似,但没有MarkPersistent调用。

另外,你可以使用类似于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;

5. 创建一个临时连接定义

设计时可以使用FireDAC连接编辑器在设计时创建一个临时连接定义。为了做到这一点,双击一个TFDConnection来调用编辑器。

或者在设计模式下点击TFDConnection图标,从对象检查器的DriverName属性中选择驱动程序。之后,展开Params属性并设置所需的属性。最后一步是将Connected属性设置为True。

运行时要在代码中创建一个临时连接,请填写TFDConnection.Params属性。这是最简单和最方便的创建连接定义的方法。

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.Params属性投给一个DBMS特定的类。这是创建连接定义的最安全的方法,因为可以用IDE的Code Insight和编译器的语法检查来检查其正确性。

uses
  FireDAC.Phys.IBDef, FireDAC.Phys.IBWrapper;
......
FDConnection1.DriverName := 'IB';
with FDConnection1.Params as TFDPhysIBConnectionDefParams do begin
  Protocol := ipTCPIP;
  Server := '127.0.0.1';
  Database := 'c:\IB\employee.gdb';
  UserName := 'sysdba';
  Password := 'masterkey';
end;
FDConnection1.Connected := True;

另一个选择是在运行时通过填充TFDConnection.ConnectionString属性来指定一个连接字符串。连接字符串可能是为某些类型的应用程序指定连接定义参数的一种方便方式。比如说:

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

6.编辑一个连接定义

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

uses
  FireDAC.VCLUI.ConnEdit;
...
if TfrmFDGUIxFormsConnEdit.Execute(FDConnection1, '') then
  FDConnection1.Connected := True;

要编辑一个以FireDAC连接字符串表示的连接定义,使用代码:

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;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/374778.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue下载安装步骤的详细教程(亲测有效) 1

目录 一、【准备工作】nodejs下载安装(npm环境) 1 下载安装nodejs 2 查看环境变量是否添加成功 3、验证是否安装成功 4、修改模块下载位置 (1)查看npm默认存放位置 (2)在 nodejs 安装目录下,创建 “node_global…

Spring中AOP的使用以及举例

1.AOP的简介 1.1 什么是AOP? AOP(Aspect Oriented Programming)面向切面编程,一种编程范式,指导开发者如何组织程序结构。 OOP(Object Oriented Programming)面向对象编程 我们都知道OOP是一种编程思想,那么AOP也是一种编程思想&#xf…

模块电源DC/DC直流隔离升压稳压HRB系列5v12v24v转50v100v110v200v220v250v300v400v

特点效率高达80%以上1*1英寸标准封装单电压输出稳压输出工作温度: -40℃~85℃阻燃封装,满足UL94-V0 要求温度特性好可直接焊在PCB 上应用HRB 0.2~10W 系列模块电源是一种DC-DC升压变换器。该模块电源的输入电压分为:4.5~9V、9~18V、及18~36VDC标准&#…

中小企业数字化自动化转型的方法

自动化是我们国内未来的趋势。智能制造的实现主要依托两个基础能力,一个是工业制造技术,另一个就是工业互联网。而自动化是工业制造技术的重要组成部分,是高度智能制造装备的核心部分,与承接着制造单元与工业互联网这两大核心。懂…

Polkadot 基础

Polkadot Polkadot联合并保护了一个不断增长的专业区块链生态系统,称为parachains。Polkadot上的应用程序和服务可以安全地跨链通信,形成真正可互操作的去中心化网络的基础。 真正的互操作性 Polkadot支持跨区块链传输任何类型的数据或资产,…

基于51单片机和proteus的智能调速风扇设计

此智能风扇是基于51单片机和proteus的仿真设计,功能如下: 1. Timer0 PWM控制电机转速 2. DHT11采集温湿度 3. LCD1602显示温湿度及电机状态 4. 按键控制电机加减速启停等 5. 串口控制电机加减速启停等 功能框图如下: Proteus仿真界面如下…

EasyExcel使用与详细说明,EasyExcel工具类

文章目录1.Apache POI1.1 学习使用成本较高1.2 POI的内存消耗较大1.3 特点2. 初识EasyExcel2.1 重写了POI对07版Excel的解析2.2 特点3.快速入门3.1 导入依赖坐标3.2 最简单的读3.2.1 需求、准备工作3.2.2 编写导出数据的实体3.2.3 读取Excel的监听器,用于处理读取产…

rabbitmq在linux系统下安装步骤

第一步:登录官网 官网地址:www.rabbitmq.com,点击Get Started 重要信息:RabbitMQ Tutorials手册,描述了工作模式 第二步:点击Download Installation下载 重要信息:rabbitmq是用erlang语言开发的&#xff0…

C++类与对象(上)【详析】

目录1.面向过程和面向对象初步认识2.类的引入3.类的定义4.类的访问限定符及封装4.1访问限定符4.2封装5.类的作用域6.类的实例化7.类对象模型7.1 如何计算类对象的大小8.this关键字如果说我们对C的初步认识,是觉得C是对C语言不足之处的进行修补,在认识完类…

Vue-router 3.x 版本中路由守卫钩子函数解析

目录概念:分类全局前置守卫 ( router.beforeEach )全局解析守卫 ( router.beforeResolve )全局后置守卫 ( router.afterEach )路由独享守卫 ( beforeEnter )组件内的守卫…

有哪些办法可以降低 Redis 的内存使用情况

在逛知乎时,看到这样一个问题,觉得挺不错的,将自己个人的见解分享给大家。问题是:有哪些办法可以降低 Redis 的内存使用情况?个人也对Redis做了一个比较全面的问题汇总,希望对大家有所帮助。Redis面试题汇总要降低内存…

Git同时配置Github和Gitlab

电脑的git需要同时管理Github上自己的代码仓库和Gitlab的公司的代码仓库,所以记录同时配置两者的步骤。 第一步、清除已有的全局配置(我之前只有github的配置) git config --global --unset user.name git config --global --unset user.em…

【论文阅读总结】Mask R-CNN翻译总结

Mask R-CNN1.摘要Mask R-CNN相关介绍与优点2.引言3.文献综述3.1 R-CNN3.2 Instance Segmentation【实例分割】4. Mask R-CNN介绍4.1 Faster R-CNN(相关细节请看相关文章)4.2 Mask R-CNN4.3 Mask Representation【遮罩表示法】4.4 RoIAlign【感兴趣区域对齐】4.4.1 RoIPool【感兴…

软件测试面试问答

笔试 笔试的话我们需要揣测具体会考什么内容,我们可以通过招聘信息去了解该公司需要什么样的技能,以此来准备笔试。一般必考的内容会有编程,测试用例设计,工作流程,逻辑思维等内容,除此之外每个公司可能还会…

【设计模式】我终于读懂了模板方法模式。。。

🍎豆浆制作问题 编写制作豆浆的程序,说明如下: 1.制作豆浆的流程 选材—>添加配料—>浸泡—>放到豆浆机打碎 2)通过添加不同的配料,可以制作出不同口味的豆浆 3)选材、浸泡和放到豆浆机打碎这几个步骤对于制作每种口味的豆浆都是一样…

二、IA-32系列处理器 通用寄存器介绍

IA-32系列处理器 通用寄存器介绍 寄存器处理器内的特殊存储单元处理器内有多种不同用途的寄存器寄存器分别有各自的名称,以便表示及访问通用寄存器IA-32系列CPU有8个32位的通用寄存器(General-Purpose Registers)通用寄存器不仅能存储数据,而且能参与算术逻辑运算,还能给出…

OpenCV 图像轮廓检测

本文是OpenCV图像视觉入门之路的第15篇文章,本文详细的介绍了图像轮廓检测的各种操作,例如:轮廓检索模式、轮廓逼近算子等操作。 图像轮廓是具有相同颜色或灰度的连续点的曲线,轮廓在形状分析和物体的检测和识别中很有用。图像轮廓…

预训练BERT

与PTB数据集相比,WikiText-2数据集保留了原来的标点符号、大小写和数字,并且比PTB数据集大了两倍多。 我们可以任意访问从WikiText-2语料库中的一对句子生成的预训练(遮蔽语言模型和下一句预测)样本。 原始的BERT有两个版本&…

《Python机器学习》基础代码

1,要学习Python机器学习,第一步就是读入数据,这里我们以读入excel的数据为例,利用jupyter notebook来编码,具体教程看这个视频 推荐先上传到jupyter notebook,再用名字.xlsx来导入 Jupyter notebook导入Excel数据的两种方法介绍_哔哩哔哩_bilibili 2,…

MyBatis - 06 - MyBatis获取参数值的两种方式(重要)

文章目录1、回顾JDBC原生的获取参数值的方式2、MyBatis获取参数值的两种方式3、MyBatis获取参数值的五种情况情况1: Mapper接口方法的参数为单个字面量类型的参数ParameterMapper接口代码测试类代码ParameterMapper.xml配置方式1:${}ParameterMapper.xml配置方式2:#…