社区
数据库相关
帖子详情
使用ADO中的事务往SQLSERVER中插入数据时,为什么只有最后一行提交了(再线等待)
litongling
2003-11-14 08:40:59
但是去除了事务直接写却可以提交全部的数据。
...全文
144
7
打赏
收藏
使用ADO中的事务往SQLSERVER中插入数据时,为什么只有最后一行提交了(再线等待)
但是去除了事务直接写却可以提交全部的数据。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jpyc
2003-11-16
打赏
举报
回复
好象ADO不能处理多条的
litongling
2003-11-14
打赏
举报
回复
如果把事务的开始放到WHILE中,达不到预期的要求,我想是把所有的临时表中的数据都添加到SQLSERVER中,有错误全部回滚的。如果添加到WHILE 中那么只对应的是一条纪录而已。
再一个事务中只能有一个EXECSQL吗,我记得以前使用BDE时,可以执行多个EXECSQL的。
这次我是第一次使用ADO。代码也是以前BDE中的。在BDE中应该是可以的呀
xfgncit98
2003-11-14
打赏
举报
回复
up
miszyf
2003-11-14
打赏
举报
回复
楼上说得好象有道理
XXSingle
2003-11-14
打赏
举报
回复
楼主把事务提交放到了循环语局的外边,这个事务就不怎么起作用了,
因每一行都执行了一次execsql,到了最后一条才退出循环,然后
CommitTrans 提交事务,很明显这个事件只对最后一个execsql起作用;
估计这就是你问了为什么的原因,把你的事务处理放到while的里边试试吧
litongling
2003-11-14
打赏
举报
回复
begin
if (clientdataset1.State = dsedit) then
clientdataset1.Post ;
try
datamodule1.adoconnection1.BeginTrans ;
clientdataset1.First ;
while not clientdataset1.Eof do {把在CLIENTDATASE1中的所有数据都添加到RK的表中。}
begin
with datamodule1.adoQuery1 do
begin
close;
sql.Clear ;
sql.add('insert jihuabiao(xuhao,bianhao,tuhao,mingcheng,shuliang,jindu,moxingchang,zhuzaochang,leixing,linghao,jihuabeizhu)');
sql.add('values(:xuhao,:bianhao,:tuhao,:mingcheng,:shuliang,:jindu,:moxingchang,:zhuzaochang,:leixing,:linghao,:jihuabeizhu)');
Parameters.ParamByName('xuhao').Value :=jhxuhao;
Parameters.parambyname('bianhao').Value :=edit1.text;
Parameters.parambyname('tuhao').Value :=clientdataset1.fieldbyname('tuhao').AsString ;
Parameters.parambyname('mingcheng').Value :=clientdataset1.fieldbyname('mingcheng').AsString ;
Parameters.parambyname('shuliang').Value :=clientdataset1.fieldbyname('shuliang').Asfloat;
Parameters.parambyname('jindu').Value :=clientdataset1.fieldbyname('jindu').Asdatetime ;
Parameters.parambyname('moxingchang').Value :=clientdataset1.fieldbyname('moxingchang').AsString ;
Parameters.parambyname('zhuzaochang').Value :=clientdataset1.fieldbyname('zhuzaochang').AsString ;
Parameters.parambyname('leixing').Value :=clientdataset1.fieldbyname('leixing').AsString ;
Parameters.parambyname('linghao').Value :=clientdataset1.fieldbyname('linghao').AsString ;
Parameters.parambyname('jihuabeizhu').Value :=clientdataset1.fieldbyname('beizhu').AsString ;
execsql;
end;
clientdataset1.Next ;
end;
datamodule1.ADOConnection1.CommitTrans ;
clientdataset1.enablecontrols;
except
if datamodule1.ADOConnection1.InTransaction then
datamodule1.adoconnection1.RollbackTrans ;
showmessage('错误,请检查输入是否正确');
clientdataset1.enablecontrols;
end;
end;
txlicenhe
2003-11-14
打赏
举报
回复
你的代码?
VC
使用
ADO
连接Oracle
数据
库
在VC++环境
中
,
使用
ADO
(ActiveX Data Objects)来连接Oracle
数据
库是一种常见的方法。
ADO
是Microsoft提供的一个
数据
访问接口,它允许程序员通过简单的API调用来访问各种
数据
源,包括Oracle
数据
库。下面将详细介绍...
C# DBHelper类
- `ExecuteScalar(string sql)`: 执行返回单个值的SQL语句,如SELECT MAX(id)等,返回结果的第
一行
第一列
数据
。 - `ExecuteReader(string sql)`: 执行返回多行
数据
的SQL语句,返回一个 SqlDataReader 对象,可以...
C#
数据
库编程从入门到精通
2. SqlConnection:用于创建到SQL Server
数据
库的连接,是
ADO
.NET
中
的一个关键类。 3. SqlCommand:用于执行
数据
库查询或命令,如SELECT、INSERT、UPDATE和DELETE语句。 二、
数据
库连接 1. 连接字符串:用于指定...
SQL Server
数据
库之
使用
事务
一个显式
事务
必须通过 BEGIN TRANSACTION 语句开始,从连接上一个 SQL Server
数据
库服务器的那一刻开始,在此连接上执行的所 T-SQL 语句都是
事务
的一部分,知道
事务
结束为止,能
使用
GEGIN TRANSACTION 语句来开启...
sqlBulkCopy批量
插入
sqlServer
,提高
数据
处理速度
数据
源准备:将待导入的
数据
准备成DataTable或实现了接口的对象(如XmlReader创建...通过
使用
SQL Server 底层的批量
插入
机制,提供了一个高效、易用的
数据
导入工具,适用于需要将大量
数据
批量导入 SQL Server 的场景。
数据库相关
2,507
社区成员
88,453
社区内容
发帖
与我相关
我的任务
数据库相关
Delphi 数据库相关
复制链接
扫一扫
分享
社区描述
Delphi 数据库相关
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章