Delphi 中 FireDAC 数据库连接(设置选项)

news2025/1/13 17:31:04

描述了为什么选项集使FireDAC成为一个灵活的数据库框架以及如何使用这些选项。FireDAC提供了大量的选项,这些选项被组织成一个分层的选项系统,大多数选项可以保留其默认值。

一、议题

Topic

Description

数据类型映射

FireDAC提供了一个灵活的可调整的数据类型映射系统,它允许你简化向FireDAC的迁移或优化数据表示。

二、描述

FireDAC的选项分为五组:

  1. FetchOptions - 控制组件和Phys层命令如何从DBMS中获取数据的获取选项。例如,可以一次性获取所有记录或按需获取记录。

  1. FormatOptions - 格式选项,控制DBMS的数据类型如何映射到FireDAC的数据类型并向后延伸。例如,程序员可以为Oracle NUMBER (38)设置映射到dtBCD或dtInt64。更多细节,请阅读数据类型映射。

  1. UpdateOptions - 更新选项,控制FireDAC如何向DBMS发布更新。例如,在更新过程中,FireDAC可以更新一个表中的所有字段,或者只更新改变的字段。

  1. ResourceOptions - 资源选项,控制系统资源的使用方式,数据集的持久性和其他。例如,FireDAC的Phys层命令可以异步执行或封锁。

  1. TxOptions - 交易选项,控制交易的执行方式。例如,在ReadCommitted隔离模式下执行它们。注意,TxOptions不使用选项值继承。

因为FireDAC引入了大量的选项,设置每个数据集或命令可能会使编程变得复杂和容易出错。FireDAC通过引入父-子选项值的继承模型来解决这个问题。选项值从父级传播到子级(自上而下)。如果一个较低的级别没有明确分配的选项值,那么就从较高的级别中获取一个值,该级别已经分配了一个值,或者从最上面的级别中获取一个值。FireDAC有以下几个层次。

  • 管理者(TFDCustomManager, IFDPhysManager)层

  • 连接(TFDCustomConnection,IFDPhysConnection)层

  • 命令(TFDCustomCommand/IFDPhysCommand)/数据集(TFDCustomQuery,TFDStoredProc,等等)级别

管理者是最顶层的,连接是中间层的,而命令/数据集是最底层的。因此,通过设置任何特定的管理器或连接选项,所有数据集都会继承其值。只要程序员没有明确地给数据集选项赋值,这一点就成立。

TxxxOptions.AssignedValues标志控制了这种继承性。如果一个选项在这一层被改变,那么相应的标志就会被包含在AssignedValues中。如果一个标志没有被包括,那么一个选项的值将从上一级继承。如果标志被排除在AssignedValues之外,那么该选项又从上一级继承了它的值。

选项可以使用FDExplorer为一个持久的连接定义进行设置。在连接建立后,选项设置被应用到TFDCustomConnection选项中。

Example 1

数据类型的映射,从DBMS类型到FormatOptions中定义的客户端类型,由所有命令从其连接中继承。

with oConnection.Options.FormatOptions do begin
  OwnMapRules := True;
  MapRules.Clear;
  with MapRules.Add do begin
    PrecMax := 19;
    PrecMin := 4;
    SourceDataType := dtFmtBCD;
    TargetDataType := dtCurrency;
  end;
end;

Example 2

数据仓库应用程序可以使用管理器级别的FetchOptions来设置高速获取模式。这样一来,所有的连接和它们的所有命令都会继承这些选项。

with FDManager.FetchOptions do begin
  Items := [];
  Cache := [];
  RowsetSize := 1000;
end;

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

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

相关文章

command-line变成-bash-4.2

故障描述: 故障诊断: 分析用户创建的过程: Useradd jfedu1命令默认创建用户jfedu1,会根据如下步骤进行操作: 读取/etc/default/useradd,根据配置文件执行创建操作; 在/etc/passwd文件中添加…

Python 之 Pandas merge() 函数、set_index() 函数、drop_duplicates() 函数和 tolist() 函数

文章目录一、merge() 函数1. inner2. left 和 right3. outer二、set_index() 函数三、drop_duplicates() 函数四、tolist() 函数五、视频数据分析案例1. 问题要求2. 解决过程在最开始,我们先导入常规的 numpy 和 pandas 库。 import numpy as np import pandas as …

【数据挖掘】2、数据预处理

文章目录一、数据预处理的意义1.1 缺失数据1.1.1 原因1.1.2 方案1.1.3 离群点分析1.2 重复数据1.2.1 原因1.2.2 去重的方案1.3 数据转换1.4 数据描述二、数据预处理方法2.1 特征选择 Feature Selection2.2 特征提取 Feature Extraction2.2.1 PCA 主成分分析2.2.2 LDA 线性判别分…

四维地球2.0上线,中国四维遥感云平台布局初见端倪

‍数据智能产业创新服务媒体——聚焦数智 改变商业近日,土耳其大地震一直备受全球各国人民的关注,为了在黄金72小时内帮助解救受困人员,包括中国在内的不少国家纷纷向土耳其政府和人民伸出援手,除了派出专业的救援队伍之外&#…

数据结构前提知识

数据结构数据结构 个体的存储个体关系的存储算法对存储数据的操作程序数据结构算法衡量算法的标准时间复杂度:注意不是程序执行的时间,因为一个程序执行的时间取决于软硬件环境,不同的机器,执行的速度不一样,配置好的…

【Unity】P2 基础操作

Unity基础操作移动、旋转与缩放移动方法一:xyz移动方法二:平面移动方法三:直接调整xyz的position三值进行调整旋转方法一:选择旋转按键并旋转方法二:按住CTRL再进行旋转操作,每次15度方法三:通过…

工作中单例模式用法及其使用场景?

前言 最近工作中有这么一个需求,我们系统出单后,需要同步数据到合作方,合作方对数据接收并解析反馈结果文件给我们,根据结果文件状态判断合作方系统是否解析成功,对于失败的单子,需要邮件通知相关负责人。…

微服务实战02-EurekaServer注册中心

EurekaServer ,它扮演的角色是注册中心,用于注册各种微服务,以便于其他微服务找到和访问。 1、Eureka是什么 Eureka是Netflix的一个子模块,也是核心模块之一。Eureka是一个基于REST的服务,用于定位服务,以…

AUTOSAR为啥要开发新的社区商业模式?

总目录链接>> AutoSAR入门和实战系列总目录 文章目录1 自适应平台架构中的集群更新1.1 ara::diag 服务(诊断)更新1.2 信号到服务映射和自动驾驶接口让我们讨论一下信号到服务映射服务:Automated Driving Interface:2 车载应用商店概念本文介绍Re…

【RabbitMQ笔记09】消息队列RabbitMQ之常见方法的使用

这篇文章,主要介绍消息队列RabbitMQ之常见方法的使用。 目录 一、消息队列常见方法 1.1、连接工厂ConnectionFactory 1.2、连接Connection 1.3、通道Channel 1.4、交换机相关方法 (1)exchangeDeclare()声明交换机 1.5、队列相关方法 …

算法训练营 day58 动态规划 判断子序列 不同的子序列

算法训练营 day58 动态规划 判断子序列 不同的子序列 判断子序列 392. 判断子序列 - 力扣(LeetCode) 给定字符串 s 和 t ,判断 s 是否为 t 的子序列。 字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而…

03、SVN 建立版本库

SVN 建立版本库1 版本库2 版本库的建立步骤2.1 创建版本库的根目录2.2 创建子目录2.3 通过命令创建版本库2.4 生成目的介绍1 版本库 Subversion 是将文件数据信息保存到版本库中进行管理的Subversion 允许用户对版本库目录进行定制 2 版本库的建立步骤 2.1 创建版本库的根目…

引用数据类型和基本数据类型

1.基本数据类型: byte:字节类型,Java中最小的数据类型,1个字节,取值范围-128~127,默认值0 char:字符型,用于存储单个字符,2个字节,取值范围0~65535&#xf…

Redis使用,AOF、RDB

前言 如果有人问你:"你会把 Redis 用在什么业务场景下?" 我想你大概率会说:"我会把它当作缓存使用,因为它把后端数据库中的数据存储在内存中,然后直接从内存中读取数据,响应速度会非常快。…

“速通“ 老生常谈的HashMap [实现原理源码解读]

👳我亲爱的各位大佬们好😘😘😘 ♨️本篇文章记录的为 HashMap 实现原理&&源码解读 相关内容,适合在学Java的小白,帮助新手快速上手,也适合复习中,面试中的大佬🙉🙉&#x1f…

RocketMQ动态增加NameServer

前言 通过HTTP服务来设置NameServer地址,是唯一支持动态增加NameServer的方式,无需重启其它组件 网上搜了下没看到有兄弟们演示这块,所以刚才自己试了试,做个笔记 本文有详细的演示过程 都知道NameServer有4种配置方式&#xff0…

simulink入门指南

系列文章目录 文章目录系列文章目录常用操作技巧项目练习 - 动态系统二阶系统建模比例积分控制燕子俯冲系统建模滤波位操作总结常用操作技巧 画面缩放 空格键 鼠标左键: 拖拽空格键: fit屏幕 信号操作 双击signal可添加标签, 鼠标右键拖拽可给信号添加分支同一分支上的sig…

【并发基础】线程,进程,协程的详细解释

目录 一、什么是进程和线程 1.1 进程是什么呢? 1.2 线程又是什么呢? 1.3 线程和进程之间的关系 操作系统、进程、线程之间的关系图: 进程与线程的模型图: 下面来思考这样一个问题:为什么程序计数器、虚拟机栈和本地方法…

QNX7.1 交叉编译开源库

1.下载QNX7.1 SDK并解压 ITL:~/work/tiqnx710$ ls -l 总用量 16 drwxrwxr-x 4 xxx4096 1月 28 13:38 host -rwxrwxr-x 1 xxx 972 1月 28 13:38 qnxsdp-env.bat -rwxrwxr-x 1 xxx 1676 1月 28 13:38 qnxsdp-env.sh drwxrwxr-x 3 xxx 4096 1月 28 13:38 target xxxITL:~/work/ti…

NetApp SnapCenter 备份管理 ——借助应用程序一致的数据备份管理,简化混合云操作

NetApp SnapCenter 简单、可扩展、赋权:跨 Data Fabric 的企业级数据保护和克隆管理 主要优势 • 利用与应用程序集成的工作流和预定义策略简化备份、恢复和克隆管理。 • 借助基于存储的数据管理功能提高性能和可用性,并缩短测试和开发用时。 • 提供基…