ActiveX数据对象之事务控制在VB和DELPHI中的应用
摘要 事务控制是数据库应用系统中的关键技术之一,本文一开始先对事务控制的概念以及微软的 ActiveX 数据对象( ADO )的事务控制做了简介,之后以一个具体的实例给出ActiveX数据对象的事务控制在VB和DELPHI中的使用方法。 关键词 ActiveX数据对象(ADO);事务
摘要 事务控制是数据库应用系统中的关键技术之一,本文一开始先对事务控制的概念以及微软的 ActiveX数据对象(ADO)的事务控制做了简介,之后以一个具体的实例给出ActiveX数据对象的事务控制在VB和DELPHI中的使用方法。
关键词 ActiveX数据对象(ADO);事务控制;VB;DELPHI
1 引言
在数据库的应用中,有时会遇到以独立单元保存或取消对源数据所做的一系列更改。例如在货币转帐时,必须从帐户中减去某个数额并将其对等数额添加到另一个帐户。无论其中的哪个更新失败,都将导致帐户收支不平衡。再如,在进行商品库存管理时,当发生购进或售出商品时,一方面要在商品的销售表中保存该商品的销售记录,另一方面,还要在商品库存中对该种商品的库存进行调整。无论其中的哪个更新失败,都将导致商品收支不平衡。在这种情况下,必须通过事务控制来保证操作的一致性。
2 ActiveX数据对象事务控制
2.1 ActiveX数据对象(ADO)简介
Microsoft ActiveX Data Objects(ADO)是Microsoft开发的数据访问对象,它可使用户通过何OLE DB Provider 访问数据库服务器中的数据。ADO趋向于提供一种稳定的接口,来使用户利用多种不同的数据源包括从非关系型数据源(包括文本文件、电子邮件等)到ODBC关系型数据库。所以它是对ODBC的扩充。
ADO的主要优点是使用简单,快速,内存消耗量低,磁盘的占有量少,在关键
情况下网络的通信量最少,前端与数据存储之间的层次最少,是一种轻便质优的接口。
2.2 ActiveX数据对象(ADO)事务控制
BeginTrans、CommitTrans和RollbackTrans是ADOConnection部件供数据库应用程序在运行时调用开始事务、控制并保存或放弃所做数据修改的方法。
l BeginTrans 开始一个事务
当开始一个事务时,后来所有读写数据库的操作都发生在这次事务的环境中,直到本次事务通过调用CommitTrans或RollbackTrans来显示的终止为止。还以商品管理为例,当购进或售出商品时,在商品数据库记录上必须发生两个修改:
A、购进或销售的记录必须记录在销售表中;
B、在商品库存中对该类商品的库存进行调整。
如果出于某种原因,其中的一个操作不能被完成,那么任何一个操作都不应该发生。因为这些操作是相关的,它们发生在同一个事务中。
l RollbackTrans 取消事务中的修改并终止当前事务
为了取消对数据库所做的修改,必须用RolllbackTrans方法返回一个事务。RollbackTrans方法取消当前事务中对数据库所做的修改并终止当前事务。
l CommitTrans 提交一个事务
为了做永久性的修改,必须CommitTrans方法提交事务,这将保存用户对数据库所做的修改并结束当前事务。
在VB 6.0中,ADO成为它与各种数据源的缺省接口,ADO数据访问方式是现在和未来VB乃至Microsoft的各种应用软件进行数据访问与应用的主流。
而在DELPHI中,基于DBE(Borland Database Engine的简称,即Borland数据库引擎)的数据库访问方式是DELPHI的标准的、传统的方式;基于ADO技术的数据库访问方式,这是DELPHI 5.0新增的功能。DELPHI 5.0 提供了一整套ADO组件,封装了ADO框架的所有功能。
下面以商品库存管理来分别阐明ADOConnection的事务控制在VB和DELPHI中的应用。
3 商品库存管理中的数据库
该数据库GoodsManagement用Microsoft的SQL Server创建,包括三个用户数据表,用户表Users、库存表Goods、进销表InOutGoods,每个数据表的表结构如下:
l 用户表Users
字段名 数据类型 长度
用户名 VARCHAR 8
用户类型 VARCHAR 10
用户口令 VARCHAR 6
主键为: 用户名
注:
用户类型有一般用户和系统管理员两种,其中一般用户只能进行销售商品,碉系统管理员还可以增加或删除用户,由于本文章只是阐述ADOConnection的事务控制,所以也就涉及到用户管理。
l 库存表Goods
字段名 数据类型 长度
商品名 VARCHAR 14
商品描述 VARCHAR 16
商品库存 SMALLINT 2
主键为:商品名
l 进销表InOutGoods
字段名 数据类型 长度
进销 VARCHAR 2
商品名称 VARCHAR 14
商品数量 SMALLINT 2
商品价格 MONEY 8
操作人员 VARCHAR 8
操作时间 DATETIME 8
主键为:(操作人员,操作时间)
外键为:操作人员,对应于Users表的用户名
4 ADO事务控制应用〈〈商品库存管理〉〉在VB中的实现
4.1 数据环境设计器
图1 数据环境设计器
数据环境设计器中主要控件的属性如下:
控件名 控件类型 重要属性设置
CN ADOConnection对象 ConnectSource如下:
Provider=SQLOLEDB.1;Password=SA;Persist Security Info=True;User ID=sa;
Initial Catalog=GoodsManagement
Goods ADOCommand对象 ConnectionName:CN
CommandText:Goods
InOutGoods ADOCommand对象 ConnectionName:CN
CommandText:Goods
StrSQL ADOCommand对象 ConnectionName:CN
CommandText:Goods
4.2 进库管理模块的代码
下面就以其中的一个程序段“进库管理”来说明ADO数据对象如何实现事务管理。
Dim intNum1, intNum2 As Integer ? ‘开始一个事务 DE.Cn.BeginTrans With DE.rsInOutGoods ‘写入购进商品的记录 .AddNew .Fields(0).Value = "进" .Fields(1).Value = TxtName.Text .Fields(2).Value = CInt(TxtNumber.Text) .Fields(3).Value = CInt(TxtPrice.Text) .Fields(4).Value = G_userName .Fields(5).Value = CStr(Now) . .Update End With If DE.rsStrSQL.State = adStateOpen Then DE.rsStrSQL.Close End If
‘求进销表中商品名为TxtNumber.Text且为进的所有记录的进货数量之和
With DE.rsStrSQL .Open "select sum(商品数量) from InOutGoods where 进销='进'" & " and 商品名称='" & TxtName.Text & "'" intNum1 = .Fields(0).Value .Close End With
‘求进销表中商品名为TxtName.Text且为销的所有记录的进货数量之和
With DE.rsStrSQL
.Open "select sum(商品数量) from InOutGoods where 进销='销'" & " and
商品名称='" & TxtName.Text & "'"
If .RecordCount = 1 And IsNull(.Fields(0).Value) Then intNum2 = 0 Else intNum2 = .Fields(0) End If .Close End With
‘调整商品库存中该商品的库存量
DE.Cn.Execute "update Goods set 商品库存=" & (intNum1 - intNum2) & " where 商品名='" & TxtName.Text & "'"
‘向数据库提交事务
D【本文来自鸿网互联 (http://www.68idc.cn)】E.Cn.CommitTrans
?
5 ADO事务控制应用〈〈商品库存管理〉〉在DELPHI中的实现
5.1 系统中的数据模块
数据模块窗体主要控件的属性如下:
控件名 控件类型 重要属性设置
ADOCn ADOConnection对象 ConnectSource :(同前)
ADODatasetGoods 数据集部件ADODataset ConnectionName:ADOCN
CommandText:Goods
ADODatasetInOutGoods 数据集部件ADODataset ConnectionName:ADOCN
CommandText:Goods
ADODataset1 数据集部件ADODataset ConnectionName:ADOCN
CommandText:Goods
DataSourceGoods DataSource控件 Dataset:ADODatasetGoods
DataSourceInOutGoods DataSource控件 Dataset:ADODatasetInOutGoods
5.2 进库管理模块的代码
下面就以其中的一个程序段“进库管理”来说明ADO数据对象如何实现事务管理。
var strSQL:string; intNum1,intNum2,intRecordsAffected:integer; begin ? //启动事务控制 DM.ADOCn.BeginTrans; //向进销表插入一条记录 with DM.ADODataSetInOutGoods do begin insert; fields[0].Value:='进'; fields[1].Value:= editName.text; fields[2].AsString:=editNumber.text; fields[3].AsString:=editPrice.text; fields[4].Value:=G_UserName; fields[5].AsString :=DateTimeToStr(now); Post; end; //求进销表中商品名为editName.text且为进的所有记录的进货数量之和 strSQL:='select sum(商品数量) from InOutGoods where 进销=''进'' and 商品名称='''+editName.text+''''; with DM.ADODataSet1 do begin Close; CommandText:=strSQL; Open; end; intNum1:=DM.ADODataSet1.Fields[0].Value ; //求进销表中商品名为editName.text且为销的所有记录的进货数量之和 strSQL:='select sum(商品数量) from InOutGoods where 进销=''销'' and 商品名称='''+editName.text+''''; with DM.ADODataSet1 do begin Close; CommandText:=strSQL; Open; end; if (DM.ADODataSet1.RecordCount=1) and DM.ADODataSet1.Fields[0].Value=null) then IntNum2:=0 else intNum2:=DM.ADODataSet1.Fields[0].value; strSQL:='update Goods set 商品库存='+intToStr(intNum1-intNum2) +' where 商品名='''+editName.Text+''''; DM.ADOCn.Execute (strSQL,intRecordsAffected,[eoExecuteNoRecords]) ; DM.ADOCn.Execute(strSQL,intRecordsAffected,[eoExecuteNoRecords]) ; DM.ADOCn.CommitTrans ; ?

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











DDREASE는 하드 드라이브, SSD, RAM 디스크, CD, DVD 및 USB 저장 장치와 같은 파일 또는 블록 장치에서 데이터를 복구하기 위한 도구입니다. 한 블록 장치에서 다른 블록 장치로 데이터를 복사하여 손상된 데이터 블록은 남겨두고 양호한 데이터 블록만 이동합니다. ddreasue는 복구 작업 중에 간섭이 필요하지 않으므로 완전히 자동화된 강력한 복구 도구입니다. 게다가 ddasue 맵 파일 덕분에 언제든지 중지하고 다시 시작할 수 있습니다. DDREASE의 다른 주요 기능은 다음과 같습니다. 복구된 데이터를 덮어쓰지 않지만 반복 복구 시 공백을 채웁니다. 그러나 도구에 명시적으로 지시된 경우에는 잘릴 수 있습니다. 여러 파일이나 블록의 데이터를 단일 파일로 복구

0. 이 글은 어떤 내용을 담고 있나요? 우리는 다재다능하고 빠른 최첨단 생성 단안 깊이 추정 모델인 DepthFM을 제안합니다. DepthFM은 전통적인 깊이 추정 작업 외에도 깊이 인페인팅과 같은 다운스트림 작업에서 최첨단 기능을 보여줍니다. DepthFM은 효율적이며 몇 가지 추론 단계 내에서 깊이 맵을 합성할 수 있습니다. 이 작품을 함께 읽어보아요~ 1. 논문 정보 제목: DepthFM: FastMoncularDepthEstimationwithFlowMatching 저자: MingGui, JohannesS.Fischer, UlrichPrestel, PingchuanMa, Dmytr

Google이 추진하는 JAX의 성능은 최근 벤치마크 테스트에서 Pytorch와 TensorFlow를 능가하여 7개 지표에서 1위를 차지했습니다. 그리고 JAX 성능이 가장 좋은 TPU에서는 테스트가 이루어지지 않았습니다. 개발자들 사이에서는 여전히 Tensorflow보다 Pytorch가 더 인기가 있습니다. 그러나 앞으로는 더 큰 모델이 JAX 플랫폼을 기반으로 훈련되고 실행될 것입니다. 모델 최근 Keras 팀은 기본 PyTorch 구현을 사용하여 세 가지 백엔드(TensorFlow, JAX, PyTorch)와 TensorFlow를 사용하는 Keras2를 벤치마킹했습니다. 첫째, 그들은 주류 세트를 선택합니다.

지연이 발생하고 iPhone의 모바일 데이터 연결 속도가 느립니까? 일반적으로 휴대폰의 셀룰러 인터넷 강도는 지역, 셀룰러 네트워크 유형, 로밍 유형 등과 같은 여러 요소에 따라 달라집니다. 더 빠르고 안정적인 셀룰러 인터넷 연결을 얻기 위해 할 수 있는 일이 몇 가지 있습니다. 수정 1 – iPhone 강제 다시 시작 때로는 장치를 강제로 다시 시작하면 셀룰러 연결을 포함한 많은 항목이 재설정됩니다. 1단계 – 볼륨 높이기 키를 한 번 눌렀다가 놓습니다. 그런 다음 볼륨 작게 키를 눌렀다가 다시 놓습니다. 2단계 - 프로세스의 다음 부분은 오른쪽에 있는 버튼을 누르는 것입니다. iPhone이 다시 시작되도록 하세요. 셀룰러 데이터를 활성화하고 네트워크 속도를 확인하세요. 다시 확인하세요 수정 2 – 데이터 모드 변경 5G는 더 나은 네트워크 속도를 제공하지만 신호가 약할 때 더 잘 작동합니다

세상은 미친 듯이 큰 모델을 만들고 있습니다. 인터넷의 데이터만으로는 충분하지 않습니다. 훈련 모델은 '헝거게임'처럼 생겼고, 전 세계 AI 연구자들은 이러한 데이터를 탐식하는 사람들에게 어떻게 먹이를 줄지 고민하고 있습니다. 이 문제는 다중 모드 작업에서 특히 두드러집니다. 아무것도 할 수 없던 시기에, 중국 인민대학교 학과의 스타트업 팀은 자체 새로운 모델을 사용하여 중국 최초로 '모델 생성 데이터 피드 자체'를 현실화했습니다. 또한 이해 측면과 생성 측면의 두 가지 접근 방식으로 양측 모두 고품질의 다중 모드 새로운 데이터를 생성하고 모델 자체에 데이터 피드백을 제공할 수 있습니다. 모델이란 무엇입니까? Awaker 1.0은 중관촌 포럼에 최근 등장한 대형 멀티모달 모델입니다. 팀은 누구입니까? 소폰 엔진. 런민대학교 힐하우스 인공지능대학원 박사과정 학생인 Gao Yizhao가 설립했습니다.

최근 군계는 미군 전투기가 이제 AI를 활용해 완전 자동 공중전을 완수할 수 있다는 소식에 충격을 받았다. 네, 얼마 전 미군의 AI 전투기가 최초로 공개되면서 그 미스터리가 드러났습니다. 이 전투기의 정식 명칭은 VISTA(Variable Stability Flight Simulator Test Aircraft)로 미 공군 장관이 직접 조종해 일대일 공중전을 모의 실험한 것이다. 5월 2일, 미 공군 장관 프랭크 켄달(Frank Kendall)이 X-62AVISTA를 타고 에드워드 공군 기지에서 이륙했습니다. 1시간의 비행 동안 모든 비행 작업은 AI에 의해 자동으로 완료되었습니다. Kendall은 "지난 수십 년 동안 우리는 자율 공대공 전투의 무한한 잠재력에 대해 생각해 왔지만 항상 도달할 수 없는 것처럼 보였습니다."라고 말했습니다. 그러나 지금은,

이번 주, 오픈AI(OpenAI), 마이크로소프트(Microsoft), 베조스(Bezos), 엔비디아(Nvidia)가 투자한 로봇 회사인 FigureAI는 약 7억 달러의 자금 조달을 받았으며 내년 내에 독립적으로 걸을 수 있는 휴머노이드 로봇을 개발할 계획이라고 발표했습니다. 그리고 Tesla의 Optimus Prime은 계속해서 좋은 소식을 받았습니다. 올해가 휴머노이드 로봇이 폭발하는 해가 될 것이라는 데는 누구도 의심하지 않는다. 캐나다에 본사를 둔 로봇 회사인 SanctuaryAI는 최근 새로운 휴머노이드 로봇인 Phoenix를 출시했습니다. 관계자들은 이 로봇이 인간과 같은 속도로 자율적으로 많은 작업을 완료할 수 있다고 주장한다. 인간의 속도로 자동으로 작업을 완료할 수 있는 세계 최초의 로봇인 Pheonix는 각 물체를 부드럽게 잡고 움직이며 우아하게 왼쪽과 오른쪽에 배치할 수 있습니다. 자동으로 물체를 식별할 수 있습니다.

다중 모드 문서 이해 기능을 위한 새로운 SOTA! Alibaba mPLUG 팀은 최신 오픈 소스 작업인 mPLUG-DocOwl1.5를 출시했습니다. 이 작품은 고해상도 이미지 텍스트 인식, 일반 문서 구조 이해, 지침 따르기, 외부 지식 도입이라는 4가지 주요 과제를 해결하기 위한 일련의 솔루션을 제안했습니다. 더 이상 고민하지 말고 먼저 효과를 살펴보겠습니다. 복잡한 구조의 차트도 한 번의 클릭으로 인식하고 마크다운 형식으로 변환 가능: 다양한 스타일의 차트 사용 가능: 보다 자세한 텍스트 인식 및 위치 지정도 쉽게 처리 가능: 문서 이해에 대한 자세한 설명도 제공 가능: 아시다시피, " 문서 이해"는 현재 대규모 언어 모델 구현을 위한 중요한 시나리오입니다. 시장에는 문서 읽기를 지원하는 많은 제품이 있습니다. 그 중 일부는 주로 텍스트 인식을 위해 OCR 시스템을 사용하고 텍스트 처리를 위해 LLM을 사용합니다.
