使用 sqltransaction 插入表时选择数据

Posted

技术标签:

【中文标题】使用 sqltransaction 插入表时选择数据【英文标题】:Select data when table is inserted with sqltransaction 【发布时间】:2012-07-11 14:33:54 【问题描述】:

我需要从表格中选择数据。 我的问题是:我使用 sqltransactions 在表中插入一行。一旦执行插入,这将锁定表。然后我需要从此表中选择数据以进行进一步执行,但我无法做到。我也尝试使用 nolock 但没有帮助。

我的代码是这样的

Database.myConnection = new SqlConnection(Database.SQLConnectionString);
Database.myConnection.Open();

Database.myTrans =  Database.myConnection.BeginTransaction(System.Data.IsolationLevel.ReadUncommitted, "SampleTransaction");
// Must assign both transaction object and connection
// to Command object for a pending local transaction
Database.myCommand = Database.myConnection.CreateCommand();
Database.myCommand.Connection = Database.myConnection;
Database.myCommand.Transaction = Database.myTrans;
Database.ExecuteSqlNonQuery("INSERT INTO customer(CustomerNo,CustomerName)VALUES('121','asd')");

现在我尝试从客户表中选择,但它死锁了..我也尝试使用 nolock 进行选择,但没有结果..

【问题讨论】:

我想你需要告诉我们你用什么来连接数据库这是一个c#问题,例如msdn.microsoft.com/en-us/library/… 还提供代码示例 我通过c#连接到2005 sql数据库.. 你的 SELECT 是什么样的,即 c# 位? 您是否已提交交易? 【参考方案1】:

为 UPDATE 和 SELECT 重用连接对象。

当执行多个更新时,只需传递方法之间的连接。确保使用 USING 语句包装

using (SqlConnection Conn = new SqlConnection(...))

    Method1(conn);
    Method2(conn);

【讨论】:

以上是关于使用 sqltransaction 插入表时选择数据的主要内容,如果未能解决你的问题,请参考以下文章

CommandBuilder 和 SqlTransaction 插入/更新行

在将数据插入书籍表时选择类别和子类别

无法访问 SqlTransaction 对象以在 catch 块中回滚

为啥使用带有 SqlTransaction 的 using 语句?

将多条记录插入 SQL 表时,它不遵循顺序

将 SqlTransaction 与 SqlDataReader 一起使用