加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 将SqlTransaction与SqlDataReader一起使用

发布时间:2020-12-15 22:15:57 所属栏目:百科 来源:网络整理
导读:有很多人在网上谈论它,但这似乎不起作用.这是我得到的例外: This SqlTransaction has completed; it is no longer usable. 这是代码 using (SqlConnection locationConnection = new SqlConnection(connectionString)) { locationConnection.Open(); SqlTra
有很多人在网上谈论它,但这似乎不起作用.这是我得到的例外:

This SqlTransaction has completed; it is no longer usable.

这是代码

using (SqlConnection locationConnection = new SqlConnection(connectionString))
        {
            locationConnection.Open();
            SqlTransaction transaction = locationConnection.BeginTransaction();
            SqlCommand cmd = new SqlCommand("
 Select stuff from table A
 Insert stuff into table B
 Delete stuff from table A",locationConnection,transaction); 

            using(SqlDataReader reader = cmd.ExecuteReader())
                    {
                        while (reader.Read())
                        {
                            //Doesn't matter
                        }                            
                    }

            //Exception happens here
            transaction.Commit();       
        }

任何人都可以阐明为什么会这样吗?如果我在SqlDataReader的范围内移动提交,我会得到一个例外,即datareader需要先关闭.

编辑:我已经回答了我的问题,并会在我被允许的情况下尝试记住接受它.

解决方法

问题是我得到了一个带有DELETE语句的SqlException(外键问题).这是关闭sqlconnection并结束事务,但它没有在我的代码中抛出异常,因为SELECT语句工作正常.我已经解决了Sql问题,代码工作正常.如果有其他人遇到这个问题,他们应该能够以与我相同的方式做到这一点.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读