2012-06-16 39 views
0

我有我的sql服務器數據庫中的列類型錢,這是moneyAcumulated。然後用一個command對象執行一個存儲過程 - 對於其他的東西 - 爲列moneyAcumulated帶來值。然後在while循環中,我將所有存儲過程返回的每列值存儲在變量中。變量持有sql錢數據類型不更新(C#)

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

而循環遍歷每個變量採用正確的值(包括moneyAcumulated帶來的reader,但第二次moneyAcumulated不改變其價值和別人一樣,爲什麼呢?

+0

您是否看過Management Studio中的結果集?所有行的值可能都是相同的。另外,您將值存儲在相同變量的所有行中。您可能想要使用列表或類似的東西來保存每一行。 –

+0

是的,當我在調試時,我在每次迭代中查詢('select * from Money')以查看'moneyAcumulated'列的值,並且它在數據庫中變化,但在程序中不變。 –

回答

0

的問題是第一次SqlDataReader會加載內存中的command.ExecuteReader返回的所有數據,如果數據庫中的數據發生變化,它們不會在內存中發生變化,我認爲每次程序執行reader.Read()方法時它們都會更改,所以這就是爲什麼不是因爲數據庫中的moneyAcumulated字段是相同的ini特別是所有讓我更困惑的元組,因爲其他人正在改變,而moneyAcumulated不是。