Ado.net 事务连接问题

clever_yang 2008-07-07 11:21:16
今天在做项目的时候碰到一个SQL数据库执行超时的情况,后面我发现与事务有关。
不知道大家有没有碰到过和我一样的情况,所以拿到这里讨论一下。
下面是我列出的一个伪代码:

public void A(trans)
{
int id= exeSql(sqlconnection conn," select id from tmp where ****);
//新开的连接
.
.
. //其他的逻辑。
.
.
.

exeSql(trans,"update tmp2 set a='test' where id='"+id+"'");
//这个里面的trans是从外面传递过来的
}

我的问题:
1.是在一个事务中,查询与修改(insert,update)是否存在
2.能否在ADO.net里面同时打开2个连接(不用线程)
...全文
87 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
DalyQiao 2008-07-07
  • 打赏
  • 举报
回复
没有必要吧,在同一个事务中赶快完成就行了。一个连接上的事务如果没完成,第二个连接的事务可能会被挂起。
需要使用锁定提示 Select * from table with(nolock)
amandag 2008-07-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 love969 的回复:]
1.可以同时存在
2.可以开N个连接,但前提是上一个连接的事务必须已完成,如果事务为挂起状态,则不可进行新连接.
[/Quote]
Jessezu 2008-07-07
  • 打赏
  • 举报
回复
可以
事务也可以嵌套
zhnzzy 2008-07-07
  • 打赏
  • 举报
回复
可以
love969 2008-07-07
  • 打赏
  • 举报
回复
1.可以同时存在
2.可以开N个连接,但前提是上一个连接的事务必须已完成,如果事务为挂起状态,则不可进行新连接.
clever_yang 2008-07-07
  • 打赏
  • 举报
回复
public void A(SqlTransaction trans,SqlConnection conn) //trans 属于conn 的一个连接
{
int id= exeSql( conn," select id from tmp where ****);
//新开的连接
.
.
. //其他的逻辑。
.
.
.

exeSql(trans,"update tmp2 set a='test' where id='"+id+"'");
//这个里面的trans是从外面传递过来的
}

或者这样是不是可以的呢?

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧