delphi事务处理

Delphi中数据库内容编辑实践:从Edit方法到组件应用 本文还有配套的精品资源,点击获取 简介:Delphi编程环境通过Edit方法提供了一种交互式方式编辑数据库记录。本文将详细介绍使用Delphi中的数据库组件,如TDataSource、TTable和TField,执行编辑操作的过程。同时,本文还将探讨TDBEdit控件的数据绑定,以及事务处理和编辑过程中的注意事项,为开发者构建稳定和健壮的数据库应用程序提供指导。 ... 阅读详情
当一组语句构成一个事务处理时,如果一个语句没有执行成功,则所有的语句都不成功。如果你需要更新多个表中的数据,你不希望对一个表的操作失败,而对其它表的操作成功了。这时所有事务处理是有用的。
例如,假设某个时间有人在你的站点上买了东西,有关的交易信息存储在两个表中 。一个表用来保存买者的信用卡信息,另一个表包含了要买的商品的信息。
现在,假如有一个人正试图从你的站点上买东西。他的信用卡号码已经输入了第一个表中。但是,就在这时,发生了意外情况,一道闪电击中了你的服务器,使第二个表没有被更新。在这种情况下,当然最后是两个表都没有被更新过。你当然不想收这个人的钱去买他不想买的东西。使用事务处理,你可以防止第二个表没有被更新而第一个表被更新的情况出现:

<%
Set MyConn=Sever.CreateObject("ADODB.Connection")
MyConn.Open "FILEDSN=d:Program Files
       Common FilesODBCData SourcesMyData.dsn"
MyConn.BeginTrans
MyConn.Execute "INSERT CreditCard (CCNum) VALUES ('5555-55-444-44-4444')"
MyConn.Execute "INSERT Shipping (Address) VALUES('Paris,France')"
MyConn.CommitTrans
MyConn.Close
%>
在这个例子中,用BeginTrans方法和CommitTrans方法来标记事务处理的开始和结束。在BeginTrans方法被调用之后,CommitTRans方法被调用之前,不管出现什么错误,两个表都不会被更新。
你也可以恢复一个事务处理的操作(操作作废)。要做到这一点,应使用RollBackTrans方法。考虑如下的脚本:

<%
Set MyConn=Sever.CreateObject("ADODB.Connection")
MyConn.Open "FILEDSN=d:Program Files
       Common FilesODBCData SourcesMyData.dsn"
MyConn.BeginTrans
MyConn.Execute "INSERT CreditCard (CCNum) VALUES ('5555-55-444-44-4444')"
MyConn.Execute "INSERT Shipping (Address) VALUES('Paris,France')"
IF WEEKDAYNAME(WEEKDAY(DATE))="Sunday" THEN
  MyConn.RollBackTrans
ELSE
  MyConn.CommitTrans
END IF
MyConn.Close
%>

在这个例子中,使用了RollBackTrans方法,如果是星期天,就取消事务处理所做的操作。在星期天两个表都不能被更新。

Delphi SQLSERVER事务处理应用例子 立即下载

相关推荐

SolidWorks软件安装管理程序在创建该注册表项时遇到错误: UNKNOWN\Components的解决方案

SolidWorks软件安装管理程序在创建该注册表项时遇到错误: UNKNOWN\Components的解决方案

Q82556499的博客 4169

在Delphi中使用事务

1、直接在delphi中使用事务 procedure TForm1.Button1Click(Sender: TObject); begin   ADOConnection1.BeginTrans;   Try     aq2.close;     aq2.sql.clear;     aq2.sql.add('update bank set currentMoney=current

故纸堆 2004

Zemax操作40--序列模式中LD光源模拟

LD模拟

lzy750750的博客 9119

Delphi 中 FireDAC 数据库连接(管理事务)

默认情况下,FireDAC应用程序在自动提交模式下工作,当需要时,FireDAC会自动启动一个事务,并在命令执行成功时提交,或在失败时回滚。自动提交是由TFDTxOptions.AutoCommit属性控制的。自动提交模式对应用程序来说很简单,但它:减慢了对数据库的多次更新。不允许你在一个事务中执行更多的数据库操作。不能在一个时间内延长。另外,应用程序可以使用显式事务控制。为此,使用TFDConnection方法StartTransaction, Commit, Rollback。

sensor_WU 博客 1606

Python爬虫实战 | 拼多多商品评论采集与深度分析

本文从 API 调用、网页渲染到情感分析与关键词提取,全流程剖析了“拼多多商品评论采集与分析”项目。Scrapy + API 可快速抓取评论;Playwright 可突破 API 限制,抓取完整页面内容;数据清洗 + 分析揭示用户真实反馈;可持续部署、扩展至更多商品 & 时间段;

2201_76125261的博客 1696

u-boot-2014.10移植第22天----添加nand flash命令支持(四)

解决问题:nand0: MTD Erase failure: -5 drivers/mtd/nand/nand_bbt.c文件中初始化bbt/* * Allocate memory (2bit per block) and clear the memory bad block * table. */ this->bbt = kzalloc(len, GFP_

fulinux的博客 3632

ADO的事务处理例子(Delphi)

ADO的事务处理例子(Delphi) ADOConnection1.BeginTrans;   //开始事务try with ADOCommand1 do begin Connection:=ADOConnection1; commandtext:=update [country] set [population]=10000 where [name=Venezuel

zzflover的专栏 2424

linux系统中实现智能家居的基本方法

使用QT开发智能家居中的一个物联应用,通过云服务器远程控制设备与设备进行通信。在生活中,可以使用WIFI智能插座控制电器开关,比如远程开启热水器,远程打开空调,窗帘等等。包括:WIFI联网,注册到云服务器上,编写QT UI通过网络来与云服务器通信,然后再下发指令到这个连网的设备。硬件说明:需要有一个串口转WIFI模块,另外需要加上一个USB-TTL模块,外加一根T口USB连接线,可接入PC电脑调试。

嵌入式技术开发 2608

Delphi语言的事务管理

在现代软件开发中,事务管理是数据处理的重要组成部分。事务可以理解为一系列操作的集合,这些操作作为一个单元执行,要么全部成功,要么全部失败,以保持数据库的完整性和一致性。在Delphi编程语言中,事务管理是通过数据库组件和各种数据库接口实现的,本文将详细探讨Delphi语言的事务管理,包括基本概念、实现方式、常见问题以及最佳实践。

2501_91173255的博客 390

【WRFDA安装第一期】安装 WRFDA 以运行 3DVAR/4DVAR数据同化

【WRFDA安装第一期】安装 WRFDA 以运行 3DVAR/4DVAR数据同化

WW、forever的博客 1895

[STC32G144K246入门第一步]点亮LED

STC32G144K246是一款高性能32位8051单片机,集成了丰富外设资源,适用于工业控制和复杂算法处理。该芯片支持双模式内核,内置硬件加速器,提供246KB Flash和144KB SRAM存储空间。文章详细介绍了开发环境搭建步骤、寄存器配置方法,并给出了LED驱动示例代码,通过推挽输出控制P42口实现闪烁效果。虽然开发环境相比ARM存在不足,但通过合理配置仍可满足项目需求。该教程为开发者快速上手STC32G144K246提供了实用参考。

sinat_58149788的博客 795

delphi 事务处理SQL语句

方法一(利用adoconnection.exe(sqlstate)): adoconnection1.begintrans;//开始事务 try  adoconnection1.execute(sqlstr1);  adoconnection1.execute(sqlstr2);  ...  adoconnection1.execute(sqlstrN);  adoconnectio

chinajobs的专栏 4232

无迹卡尔曼滤波 (UKF, Unscented Kalman Filter) 算法详解及案例分析

无迹卡尔曼滤波是一种用于估计非线性系统状态的递归算法。其目标是通过结合系统模型和观测数据,估计系统的最优状态。

闲人编程的博客 2627

Delphi三层的事务处理方法

 写一个远程方法 形式为: procedure trandelta(data1,data2,data3:olevariant); begin adoconnection1.begintran; datasetprovider1.as_a

编程资料收集与共享交流 1493

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Delphi 2007 下DBX4的事务处理

Delphi 2007 下面的DBX4事务处理的方式,和以前的版本略有不同varTD:TDBXTransaction;beginifnotSQLConnection.InTransactionthenbeginTD:=SQLConnection.BeginTransaction(TDBXIsolations.ReadCommitted);try/...

weixin_30407099的博客 106

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

delphi 事务处理效率

在进行数据库操作时, 我们经常会遇到批量向数据库中写入记录的情况. 在这里我提供3种操作方式:   1.  单条语句循环插入, 这是最笨的方法: for i := 0 to 100 do   ADOCommand1.Execute('IINSERT INTO .....')   //伪码, 只是说明意思   2.  多条语句批量插入, 将多条Insert语句拼成一条语句

yeeonefx的专栏 1682

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

delphi数据库应用程序什么情况下要用到事务

例如: 在ADOConnection中开始一个事务 level:=ADOConnection1.BeginTrans; 结束一个事务 ADOConnection1.CommitTrans; 中止一个事务 ADOConnection1.RollBackTrans; 大型数据库管理系统都有数据库事务的概念,并不是Delphi特有的东西。一连窜的事情的在一起形成一个事务,如果[事件一]执行成功,[事件二]没有执行成功,表明整个事务没有成功,那么[事件一]的数据也不能被存贮到数据库中,这时可以用RollBackT.

疯流人物 506

在delphi端构建数据库事务

//  ADODataSet_Main.LockType := ltBatchOptimistic; //  ADODataSet_Detail.LockType := ltBatchOptimistic; try   ADOConnection1.beginTran;    ADODataSet_Main.Insert;   // Insert Main data   ADODataSet

houyichong的专栏 946
下一篇: 进销存实战
yyilin
博客等级 码龄22年 5粉丝 16原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值