1

我的 sql server 数据库中有一个列类型 money ,即moneyAcumulated. 然后,command我使用一个对象执行一个存储过程,该过程 - 除其他外 - 为 column 带来值moneyAcumulated。然后在 while 循环中,我将存储过程返回的每一列的所有值存储在变量中。

SqlCommand command = new SqlCommand("getTickets", Connection.getConnection());
            command.CommandType = CommandType.StoredProcedure;

            SqlDataReader reader = command.ExecuteReader();

            string bet = "";
            decimal moneyAcumulated = 0.0M;
            string id= "";
            string name = "";
            int cod = -1;
            decimal prize = 0.0M;
            while (reader.Read())
            {
                bet = reader.GetString(0);
                moneyAcumulated = reader.GetDecimal(1); // This variable doesn't chage its value
                name = reader.GetString(2);
                id = reader.GetString(3);
                cod = reader.GetInt32(4);
            }

第一次while循环迭代每个变量都取正确的值(包括moneyAcumulated带来的reader,但第二次moneyAcumulated没有改变它的值而其他人这样做,为什么?

4

1 回答 1

1

问题是SqlDataReader加载了command.ExecuteReader内存中返回的所有数据然后如果数据库中的数据发生变化,它们在内存中不会改变,我以为每次程序执行该reader.Read()方法时它们都会改变,所以这就是为什么不工作。由于moneyAcumulated数据库中的字段最初对于所有让我感到困惑的元组都是相同的,因为其他的都在改变而moneyAcumulated没有改变。

于 2012-06-16T05:51:59.040 回答