使用 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 块中回滚