首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在sqltransaction中读取未提交的事务?

如何在sqltransaction中读取未提交的事务?
EN

Stack Overflow用户
提问于 2012-08-16 00:30:55
回答 2查看 182关注 0票数 1

在我的.net Framework2.0 c#代码中使用SQLTransaction时遇到了一个问题

这是我的代码:

代码语言:javascript
复制
public bool register()
    {
        SqlConnection conn = DB.getInstance().getConnection();
        conn.Open();
        SqlTransaction sqlTransaction = conn.BeginTransaction();
        SqlCommand cmd = new SqlCommand();
        cmd.Connection = conn;
        cmd.Transaction = sqlTransaction;          

        try
        {
            cmd = insertMembers(cmd);
            cmd.ExecuteNonQuery();

            SqlDataReader read = null;
            cmd.CommandText = "SELECT * FROM members WHERE username='" + username + "'";
            read = cmd.ExecuteReader();
            while (read.HasRows)
            {
                id0 = (int)read["id0"];
            }

            cmd = insertMembersBalance(cmd);
            cmd.ExecuteNonQuery();

            cmd = insertMembersEPoint(cmd);
            cmd.ExecuteNonQuery();

            cmd = insertMembersVerify(cmd);
            cmd.ExecuteNonQuery();

            reset();

            sqlTransaction.Commit();
        }
        catch(Exception e)
        {                
            sqlTransaction.Rollback();
            Console.WriteLine(e.ToString());
            return false;
        }
        finally
        {
            conn.Close();
        }

        return true;
    }

我无法从members表中获取用于将另一个记录插入到另一个表中的id。

有没有其他的解决方案?

EN

回答 2

Stack Overflow用户

发布于 2012-08-16 01:29:59

必须先调用dr.Read(),然后再调用SqlDataReader dr = cmd.........

票数 0
EN

Stack Overflow用户

发布于 2012-08-16 03:08:38

代码语言:javascript
复制
        if (read.HasRows)  // needs to be if not while or it will just loop
        {
             read.Read();
             id0 = (int)read["id0"];
        }
        read.Close();      // need to close the reader before you can use the cmd

        if you want to loop through all rows then 

        while (read.Read())
        {
             id0 = (int)read["id0"];
        }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11973230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档