对数据库事务处理代码通常写法的一点改进

浅析数据库(DB)、操作数据存储(ODS)和数据仓库(DW)的区别与联系 文章背景:相信大部分刚接触上面三个概念的同学,都多多少少会有些迷惑,现在我就给大家简单分析下这三者的关系,希望大家对这三者的概念理解有所帮助吧。本文主要从下面两类关系来叙述上面三者的关系: 数据库(DB)和数据仓库(DW)的区别与联系 操作数据存储(ODS)和数据仓库(DW)的区别与联系 数据库与数据仓库的区别与联系数据库与数据仓库基础概念:数据库:传统的关系型数据库的主要应用,主要是基本的、日常的 阅读详情

通常数据库事务处理代码都采用如下的模式编写:

打开数据库连接();
try
{
    开启事务();
    数据库操作1();
    数据库操作2();
    ......;
    数据库操作n();
    提交事务();
}
catch (Exception err)
{
    回滚事务();
    throw err; // 重新抛出异常(导致异常的堆栈信息发生变化,无法知道原始异常所在位置,不利于调试)
}
finally
{
    关闭数据库连接();
}

在使用中经常因为 SQL 语句或某个未知的错误导致异常和事务失败,但在 catch 块中由于 trhow err 被重新抛出,异常的堆栈信息发生变化,无法知道原始异常所在位置。所以应该避免在 catch 简单地重抛异常,改进方式比较多:

方式1)改进catch块代码,如下:

...
catch (Exception err)
{
    回滚事务();
    throw new Exception(err.Message, err); // 重新抛出异常,内部异常信息不会丢失
}
...

用 AppFramework 来编写的例程如下:
IDBSession ss = DBSessionManager.Default.GetSession();
try
{
    ss.BeginTran();
     ...
    ss.CommitTran();
}
catch (Exception err)
{
    ss.RollbackTran();
    throw new Exception(err.Message, err);
}
finally
{
    ss.Close();
}

方式2)如果不需要异常处理,干脆去掉 catch 块,让事务在连接关闭时自动回滚

打开数据库连接();
try
{
    开启事务();
    数据库操作1();
    数据库操作2();
    ......;
    数据库操作n();
    提交事务();
}
finally
{
    关闭数据库连接(); // 关闭连接,并自动回滚未提交的事务
}

用 AppFramework 来编写的例程如下,非常简洁:
using (IDBSession ss = DBSessionManager.Default.GetSession())
{
    ss.BeginTran();
     ...
    ss.CommitTran();
}

Azure数据库服务比较:SQL Database vs Cosmos DB 结构化数据场景:如订单管理、用户认证等需要强事务支持的业务非结构化/半结构化场景:如物联网设备日志、社交网络数据、实时推荐系统:基于传统关系型数据库(SQL Server)的云原生服务,支持ACID事务和复杂SQL查询Cosmos DB:全球分布式NoSQL数据库,支持多模型(文档、键值、图、宽列)和弹性扩展两者的架构设计哲学有何本质区别?数据建模和查询语言的差异如何影响开发体验?一致性、可用性、吞吐量的权衡模型如何选择?典型业务场景下的选型决策依据是什么?技术原理对比。 阅读详情

相关推荐

数据库与数据仓库

数据库是一种逻辑概念,用来存放数据的仓库,通过数据库软件来实现。 数据仓库是数据库概念的升级。从逻辑上理解,数据库和数据仓库没有区别,从数据量来说,数据仓库要比数据库更庞大的多。数据仓库主要用于数据挖掘和数据分析,辅助做决策。 数据库 Database (Oracle, Mysql, PostgreSQL)主要用于事务处理,数据仓库 Datawarehouse (Amazon Redshift, Hive)主要用于数据分析。用途上的不同决定了这两种架构的特点不同。 各自特点 数据库(Database)的特点

qq_29258377的博客 6745

mysql 存储过程 try catch_存储过程中使用事务与try catch

一、存储过程中使用事务的简单语法在存储过程中使用事务时非常重要的,使用数据可以保持数据的关联完整性,在Sql server存储过程中使用事务也很简单,用一个例子来说明它的语法格式:代码 :Create Procedure MyProcedure( @Param1 nvarchar(10),@param2 nvarchar(10))ASBeginSet NOCOUNT ON;Set XACT_ABO...

weixin_30146171的博客 2284

漫谈数据库和数据仓库的区别和联系

背景 接触大数据两年的时间里,数据仓库这个词频繁出现在我的耳朵里,随着知识的逐渐积累,对数据仓库和数据库也有了一个大概的了解。 概念 数据库(DB) 简单来说,数据库就是存储数据的仓库,主要有关系型数据库和非关系型数据库,这是一种逻辑上的概念。 数据仓库(DW) 从逻辑上来理解,和数据库的概念一致,都是存储数据的仓库,只是数据仓库的数据量更大。 数据仓库的特点 数据仓库是面向主题的 那么什么...

暁洣的博客 2317

数据库-事务

简介 概述: 将多条SQL语句, 看作一个整体. 要么一起成功, 要么一起失败,事务在mysql中, 是默认自动提交的 . 操作 命令行 - 开启事务: start transaction; - 回滚 : rollback; --此次事务中所有的sql操作, 放弃. - 提交 : commit; --此次事务中所有的sql操作, 作为一个整体, 提交. jdbc JDBC事务通过连接对象开启, 回滚 ,提交. 只针对当前连接对象生效. - 开启事务: conn.setAutoCommit(fa

qq_30245525的博客 233

golang的database.sql包和事务处理

事务是数据库操作中的一个逻辑单元,由一系列的数据库操作组成。这一系列操作要么全部执行并且提交,要么全部回滚,确保数据的一致性和完整性。预处理语句是指在数据库中提前编译和优化的SQL语句模板,可以在之后多次重复使用。在这个示例中,预处理语句一次创建,多次执行,提升了效率,并降低了SQL注入的风险。

aw2371的博客 1546

数据仓库和数据库有什么区别

一、数据仓库 1、什么是数据仓库? 数据仓库(Data Warehouse),可简写为DW或DWH,数据仓库,是为了企业所有级别的决策制定计划过程,提供所有类型数据类型的战略集合。它出于分析性报告和决策支持的目的而创建。为需要业务智能的企业 ,为需要指导业务流程改进、监视时间,成本,质量以及控制等; 2、数据仓库能干什么? 年度销售目标的制定,需要根据以往的历史报表进行决策,不能随便制定。 优化业务流程 例如:某电商平台某品牌的手机,在过去5年主要的的购买人群的年龄在什么年龄段,在那个季节购买量人多,这样

Colin_lqk的博客 1272

数据库——事务

1.概述 事务(Transaction)是由一系列对系统中数据进⾏访问与更新的操作所组成的⼀个程序执行逻辑单元。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xuuLXFhr-1621136839055)(C:\Users\jy\AppData\Roaming\Typora\typora-user-images\image-20210515220558808.png)] 2.事务的语法 start transaction; begin; commit; 使得当前的修改确认

LY201704060320的博客 302

数据库和数据仓库的区别

数据库是一种用于存储、管理和处理结构化数据的软件系统。它的设计目的是支持大规模的数据持久化和高效的数据检索、插入、更新和删除操作。数据库中的数据通常以表格形式存储,可以通过SQL等查询语言进行访问和操作。数据库通常用于在线事务处理(OLTP)场景,例如管理用户账户、订单、库存等业务数据。

优快云 精品推荐 1683

数据库事务(写得比较到位)

8.8 数据库事务 数据库事务(transaction)就是一组SQL语句,这组SQL语句是一个逻辑工作单元。可以认为事务就是一组不可分割的SQL语句,其结果应该作为一个整体永久性地修改数据库的内容,或者作为一个整体取消对数据库的修改。 数据库事务的一个例子是将钱从一个银行账号中转到另外一个银行账号中。此时通常包含两步操作:一条UPDATE语句负责从一个银行账号的总额中减去一定的钱数,

softmanfly的专栏 1871

海思ISP实战:YUV Sharpen参数调试全解析

本文深入解析了在海思ISP平台上进行YUV Sharpen参数调试的实战经验。文章以海思3516EV300芯片为例,详细拆解了EdgeFiltStr、TextureFreq等核心参数的作用与协同策略,并重点阐述了如何通过ISO联动调试,在图像清晰度与噪声抑制之间取得最佳平衡,为图像调试工程师提供了宝贵的避坑指南和实战参考。

grape的博客 209

基于PyTorch的BP神经网络PID控制器动态调参实战

本文详细介绍了基于PyTorch的BP神经网络PID控制器动态调参实战,结合BP神经网络的自适应能力和PID控制算法的经典优势,实现工业控制中的高效参数调整。通过PyTorch实现BP-PID融合架构,包括网络设计、损失函数优化及动态调参技巧,显著提升控制性能,适用于温度控制、电机控制等场景。

weixin_29094775的博客 520

MySQL事务详解

1、事务的基本操作 2、事务的ACID属性 3、事务隔离级别 4、多版本并发控制( MVCC ) 5、深入理解隔离级别

C_Trip的博客 879

【R语言】富集分析可视化代码(整理版)

分别介绍了如何使用DAVID在线分析工具对基因进行GO/KEGG功能富集分析、使用R ggplot包对获得的基因GO/KEGG功能富集结果进行可视化、使用R clusterProfiler包和R AnnotationHub包对基因进行GO/KEGG功能富集分析、OrgDb包制作以及结果可视化等。故,我重新整理了一波,并补充了可对多个分组的富集结果进行可视化以及富集结果绘制圈图等的代码。关注“在打豆豆的小潘学长”公众号,发送“富集分析3”获得完整代码包和演示数据。一、单组富集结果可视化。

weixin_54004950的博客 1万+

数据仓库和数据库的区别

本文主要介绍数据仓库和数据库的区别,首先描述下数据仓库是什么: 数据仓库的本质还是一个数据库,它将各个异构的数据源数据库的数据给统一管理起来,并且完成了质量较差的数据的剔除、格式转换,最终按照一种合理的建模方式来完成源数据组织形式的转变,以更好的支持到前端的可视化分析。 数据仓库中主要存储的是结构化的数据,但是它的来源可以是多种类型的数据来源(结构化、半结构化、非结构化),中间需要一个ETL过程。 一、用途 数据库:主要用于事务处理,即OLTP(Transaction),也就是我们常用的面向业务的增删改查操

啥也不是 2万+

VN5620以太网测试——环境搭建篇

CANoe(CAN open environment)VN5620 :是一个紧凑而强大的接口,用于以太网网络的分析、仿真、测试和验证。VN5620 接口支持各种可能的应用。它适用于与其他总线系统、网络参与(例如在模拟和生成帧、测试中的负载和错误)的同步以太网监控。在2021年Vector公司的以太网接口卡VN5610和VN5640设备已经陆续停产,相应被VN5620和VN5650代替。

诊断协议那些事儿's blog 8927

假期搞定!2026国社科申报AI全攻略指南:从选题到创新,7大核心要点手把手教你!

最后给大家推荐的400多所高校教师都在用的AI平台——高级学术版专业应用平台,集成了国际主流学术应用,以及ChatGPT、Claude、Gemini、Grok等Al大模型的高级版本平台,还有,可以辅助大家高效完成科研和学术写作任务,当然撰写硕博论文,课题、职称论文、国社科、国自然基金本子也是手拿把掐。你的任务是:用高度凝练的方式说明在(某一明确国家战略 / 政策方向,如:中国式现代化、共同富裕、基层治理现代化、数字中国、文化强国、国家安全等)背景下,我究竟要研究一个什么“具体而可操作的问题”。

智能AI让学术科研更容易 623

database.db 文件详解:数据库文件在 SQLite 中的作用与使用

本文解析了Python项目中自动生成的database.db文件的作用和使用方法。该文件是SQLite数据库的默认存储文件,包含表结构、数据记录和索引等信息。文章详细介绍了SQLite的存储原理、查看和操作方法(命令行与可视化工具)、备份策略及常见问题解决方案,并强调数据库管理需严谨,避免数据丢失。掌握.db文件的特性能帮助开发者更高效地进行项目调试和数据库维护。

聚焦学生开发者需求,分享课设毕设项目实战经验、系统开发技巧、数据库设计规范及文档排版实用方法。 2395

【推荐100个unity插件之2】 DoTween动画插件的安装和使用整合(最全)

摘要:DOTween动画插件使用指南 DOTween是Unity中强大的动画插件,比原生动画更便捷。安装后需进行初始化设置,通过工具菜单生成程序集。主要提供通用方法(DOTween.To)和便捷方法(如transform.DOMove)两种动画实现方式。插件支持丰富的动画设置(循环、缓动等)和事件回调(OnComplete、OnKill)。还提供动画管理功能,包括清除(DOTween.Clear)、完成(DOTween.CompleteAll)和终止(DOTween.KillAll)动画。常用功能涵盖移动、

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 1万+

详解数据仓库和数据库的区别

一、数据仓库 什么是数据仓库? 数据仓库(Data Warehouse),可简写为DW或DWH,数据仓库,是为了企业所有级别的决策制定计划过程,提供所有类型数据类型的战略集合。它出于分析性报告和决策支持的目的而创建。为需要业务智能的企业 ,为需要指导业务流程改进、监视时间,成本,质量以及控制等; 数据仓库能干什么?(举几个栗子) 年度销售目标的制定,需要根据以往的历史报表进行决策,不能随便...

liwenjie001的博客 8万+

ABAP SQL Hierarchy 全景参考,组织树、分类树与递归查询在数据库层的优雅落地

ABAP SQL中的hierarchy语法为树形数据结构处理提供了高效方案。S/4HANA系统中常见的成本中心、利润中心、物料分类等树形结构,传统开发需通过递归和嵌套循环处理,而ABAP SQL hierarchies通过将层级遍历能力下沉到SQL层,借助SAP HANA的层级函数支持,实现了更高效的查询。 该功能要求ABAP 7.51+版本,支持两种实现方式:CDS hierarchy用于创建可复用的稳定层级模型,适合业务核心数据;ABAP SQL HIERARCHY generator则适用于临时性层级

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 313

手把手教你学Simulink——基于Simulink的无感FOC(滑模观测器+PLL)实战

摘要: 本文详细介绍了基于Simulink的无感FOC(滑模观测器+PLL)实现方法。主要内容包括:1)SMO+PLL原理,通过滑模观测器估算反电动势,结合PLL抑制抖振;2)系统架构,替代编码器信号;3)Simulink建模流程,涵盖Clarke变换、SMO离散化实现、PLL设计等关键步骤;4)参数整定指南和工程实践要点,如启动策略和故障处理。该方法具有成本低、可靠性高的优势,适用于家电、电动车等场景,仿真结果显示角度误差±5°,速度动态跟随良好。文章还提供了调试建议和常见问题解决方案。

MHD0815的博客 136

数据库DB与数据仓库DW区别和联系

数据库(DB)和数据仓库(DW)的区别与联系 数据库与数据仓库基础概念: 数据库:传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。 数据仓库:数据仓库系统的主要应用主要是OLAP(On-Line Analytical Processing),支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。 OLTP和OLAP概念补充: 数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction processing)、联机分析处理OLAP(On-Line

信竞星球_少儿编程题库 2471

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

数据仓库和数据库有什么区别?

数据仓库和数据库是两种不同类型的数据存储解决方案,它们在设计、用途和功能上存在显著差异。首先,数据库主要用于事务处理系统,它们支持日常操作,如数据的插入、更新和删除。数据库通常具有高度规范化的结构,以减少数据冗余并确保数据一致性

杨荧的优快云博客 2358

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

数据库与数据仓库的区别及关系

数据库是为捕获数据而设计,数据仓库是为分析数据而设计**。数据库和数据仓库都有各自的优势和局限性,它们各自适用于不同的场景。数据库更适合用于快速处理事务性操作,而数据仓库则更适合用于进行复杂的数据分析和查询。它们各自有不同的用途和优化方式,可以根据实际需求选择使用。

qq_43605229的博客 7844

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

一文读懂数据库、数据仓库、数据平台、数据中台、数据湖

数据库是用于存储、管理、维护和检索数据的系统。是所有软件应用、网站、企业信息系统和数据驱动决策的基础。简单来说就是:数据库就是一个存储信息(水)的容器。数据库使用场景-图1数据库主要分为两种类型:关系型数据库和非关系型(NoSQL)数据库。非关系型又分为四种类型:键值型、列存储型、文件型和图形数据库(这块后面有时间详细说下)。数据库类型-图2题外话:某些数据库(如 MongoDB)可以分为多个类别,因为它们支持不同的数据模型。此外,所提供的列表并不详尽,因为每个类别中还有许多其他数据库可用。

m0_59235945的博客 6412
上一篇: 用 AppFramework 替换 Discuz!NT 的数据库访问层
下一篇: 用AppFramework重写Discuz数据访问层源代码
AppFramework
博客等级 码龄19年 61粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值