社区
C#
帖子详情
"此SqlTransaction已完成;它再也无法使用。" 是什莫原因?
ppp80
2004-12-14 09:49:56
我做了一个windows的服务
服务正常运行一段时间后,在ontimer中就无法再启动了,提示:此SqlTransaction已完成;它再也无法使用。
这是怎莫回事?什莫原因?
...全文
2254
12
打赏
收藏
"此SqlTransaction已完成;它再也无法使用。" 是什莫原因?
我做了一个windows的服务 服务正常运行一段时间后,在ontimer中就无法再启动了,提示:此SqlTransaction已完成;它再也无法使用。 这是怎莫回事?什莫原因?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
marvelstack
2004-12-24
打赏
举报
回复
//你的代码在有异常的情况下出现问题.
Count=myAdapter.Update(TrafficDT);
myTransaction.Commit();
}
catch(Exception ex)
{
myTransaction.Rollback();//
throw ex;
}
thinhunan
2004-12-23
打赏
举报
回复
试试不写Open(),不知会不会自动Open
herony420
2004-12-23
打赏
举报
回复
已经commit或者已经rollback了
ppp80
2004-12-23
打赏
举报
回复
up
DataLife
2004-12-14
打赏
举报
回复
试试
try
{
SqlTransaction Trs;
Trs = sqlConnection.BeginTransaction();
try
{
DataAdapter1.Update(ds,"dt");
Trs.Commit();
}
catch(System.Exception e)
{
if(Trs != null)
{
Trs.Rollback();
}
throw new Exception(e.Message);
}
finally
{
if(Trs != null)
{
Trs.Dispose();
}
}
}
catch(System.Exception e)
{
throw new Exception(e.Message);
}
bootblack
2004-12-14
打赏
举报
回复
把open和BeginTransaction放到try里头去,并在catch里头添加回滚处理(如果事务开启)。
上面的方法或许对你的问题没帮助,但应该这么做。
Seeko0
2004-12-14
打赏
举报
回复
Commit之后,没有RollBack;
try{
...
trans.Commit();
}
catch(Exception err){
trans.RollBack();
throw err;
}
//没有RollBack ,如何确定你的trans有效呢?
ppp80
2004-12-14
打赏
举报
回复
这个服务能正常运行(比如时钟启动10000次),忽然就出这个错,重新启动服务就好了
如果如楼上所说,那末时钟启动一次就可能出错呀!
ppp80
2004-12-14
打赏
举报
回复
不是呀,Commit之后,断开了Connection,也重新BeginTransaction()
open();
string strSql=" ...";
SqlTransaction myTransaction=sqlConnection.BeginTransaction();
try
{
SqlCommand myCommand=sqlConnection.CreateCommand();
myCommand.Connection=sqlConnection;
myCommand.Transaction=myTransaction;
myCommand.CommandText=strSql;
SqlDataAdapter myAdapter=new SqlDataAdapter();
myAdapter.SelectCommand=myCommand;
SqlCommandBuilder myBuilder=new SqlCommandBuilder(myAdapter);
myAdapter.FillSchema(TrafficDT,SchemaType.Mapped);
....
Count=myAdapter.Update(TrafficDT);
myTransaction.Commit();
}
catch(Exception ex)
{
throw ex;
}
finally
{
close();
}
DataLife
2004-12-14
打赏
举报
回复
你的SqlTransaction 已经Commit或者RollBack之后,你又使用SqlTransaction所在的Connection去做Select、Insert、 Delete,就会出现这个错误。
CMIC
2004-12-14
打赏
举报
回复
SqlTransaction 使用了Commit()后就是不能在使用了,必须重新BeginTransaction()一个。
ppp80
2004-12-14
打赏
举报
回复
myTransaction.Rollback();
是写在catch里边了,是我刚才没贴全!
“
Sql
Tran
sac
t
ion
已
完成
;它
再也
无法
使用
”解决方法
当只是
使用
一次事务时,只用简单的事务就可以了示例代码:
Sql
ServerDataBase obj = new
Sql
ServerDataBase();
Sql
Connect
ion
conn = obj.DBconn(); conn.Open();
Sql
Tran
sac
t
ion
my
Tran
s; my
Tran
s = co
C# 利用
Sql
BulkCopy 提交
最近要迁移数据,一个老版本的数据迁移到新版本的数据库中,字段、配置、参数什么的完全不一样。 纠结啊,写代码估计只花了1/5的时间,对字段参数这些简直是惨不忍睹啊。。。还算比较清楚结构的我,都已经无语了。 最后遇到
Sql
BulkCopy各种问题 以前封装好的方法只有单独一个表添加,调用了几次方法,经常出现此
Sql
Tran
sac
t
ion
已
完成
;它
再也
无法
使用
。 好吧,我改。。。 u...
深入
sql
server中的事务
深入
sql
server中的事务 一. 概述... 1二. 并发访问的不利影响... 11. 脏读(dirty read)... 12. 不可重复读(nonrepeatable read)... 13. 幻读(phantom read)... 1三. 并发访问的控制机制..
C#与数据库访问技术总结(五)之Command对象的常用方法
Command对象的常用方法 说明:上篇总结了Command对象的几个数据成员,这节总结Command对象的常用方法。 同样,在不同的数据提供者的内部,Command对象的名称是不同的,在
SQL
Server Data Provider里叫
Sql
Command,而在OLE DB Data Provider里叫OleDbCommand。 下面将详细介绍Command类型对象的...
并发问题及控制手段(VFP深入讲解)
作者:吕震宇
什么是并发问题?假设有这么一家书吧,顾客可以到那里喝茶读书。顾客拿着选好要读的图书到柜台登记,然后找个地方去阅读,临走时将图书归还店家。有一天,一个顾客相中了一本书后正要拿去登记,另一个顾客的手也抓住了这仅有的一本书,并发问题出现了。两个顾客要读同一本书,互不相让,这让店主伤透了脑筋。这个案例仅仅是众多并发问题中的一个微小部分,但从中我们可以看出并发问题主要出现在多个用户对有限资源进行访问的时候,如果解决不好会直接影响系统的有效、正常运行。数据库是一个共享的资
C#
110,535
社区成员
642,577
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章