繁体   English   中英

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

[英]How to read uncommited transaction within sqltransaction?

在.net Framework 2.0 C#代码中使用SQLTransaction时遇到问题

这是我的代码:

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;
    }

我无法从成员表中获取ID,用于将另一个记录插入到另一个表中。

还有其他解决方案吗?

您必须先调用dr.Read()不是SqlDataReader dr = cmd.........

        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"];
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM