1

.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を取得して、別のレコードを別のテーブルに挿入するために使用できません。

他に解決策はありますか?

4

2 に答える 2

0
        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"];
        }
于 2012-08-15T19:08:37.767 に答える
0

dr.Read()よりも先に 電話する必要がありますSqlDataReader dr = cmd.........

于 2012-08-15T17:29:59.480 に答える