gpt4 book ai didi

c# - 从 SQLConnection 对象或从 SqlCommand 对象调用 BeginTransaction 之间有区别吗?

转载 作者:行者123 更新时间:2023-11-30 21:08:51 25 4
gpt4 key购买 nike

所以我有这个来自 c# 的 sql,用于将购买信息插入表 (sql server 2005),并将购买项目(多个)插入另一个表。

我希望通过调用 BeginTransaction 在事务中运行 2 个插入语句。

我注意到我可以从 SqlConnection 对象或 SqlCommand 对象执行此操作。我的直觉告诉我应该通过连接对象来完成,因为我将为每个插入使用 1 个命令对象,但它们共享相同的连接。

我说得对吗?

总的来说两者有区别吗?

最佳答案

从连接 (BeginTransaction) 创建一个 SqlTransaction,然后将其传递给每个 SqlCommand 对象。有一个构造函数将 SqlTransaction 作为参数或仅设置 SqlCommand.Transaction 属性。

类似于:(抱歉,在 iPad 上格式化困难)

var tran = db.BeginTransaction();
try {

SqlCommand com = new SqlCommand(...., tran);
// or.
com.Transaction=tran;

// do the work, eg execute SQL

// finally commit the changes
tran.Commit();
}
catch
{
tran.Rollback();
}

关于c# - 从 SQLConnection 对象或从 SqlCommand 对象调用 BeginTransaction 之间有区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9339794/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com