2012-10-26 97 views
2

我的網站上的每個用戶都有一個reg_id。有一些emergency_contact_id與此reg_id相關聯。如何在會話中檢索單個列的多個值

例如:

EmerContact_id Reg_id  
    91    1  
    92    1  
    93    1  
    94    1  
    95    1 

現在我想這些EmerContact_id的存儲到會話這樣的:

Session["Emer1"]  
Session["Emer2"]  
Session["Emer3"]  
Session["Emer4"]  
Session["Emer5"] 

我怎樣才能做到這一點?

我想使用的:

while(reader.read()) { ... } 

但我不知道如何使用它。

+0

你需要什麼,你想存儲'EmerContact_id'並獲得'reg_id'的基礎上,或者你想同時痛兩個ids? –

+0

@huMptyduMpty我想同時存儲兩個... – punter

回答

1

您可以使用MySqlDataReader和遍歷你的結果使用索引標記,就像這樣。

using (MySqlConnection dbConnection = new MySqlConnection("connectionstring")) 
{ 
    dbConnection.Open(); 

    using (MySqlCommand dbCommand = new MySqlCommand("select EmerContact_id from [Table] order by EmerContact_id asc;", dbConnection)) 
    { 
     using (MySqlDataReader dbReader = dbCommand.ExecuteReader()) 
     { 
      int index = 1; 

      while (dbReader.Read()) 
      { 
       Session["Emer" + index.ToString()] = dbReader[0].ToString(); 

       index++; 
      } 
     } 
    } 

    dbConnection.Close(); 
} 

你也可以使用一個集合對象像List和序列化到會話這一點。

+0

謝謝@terric。 。 。我試試這個...... – punter

+0

我試過了,但是這個跳過了第一個值。 。即我得到了Session [「Emer1」] = 92而不是91。 。 – punter

+0

@ user1776428沒有任何意義,也許這是一個訂購問題 - 嘗試將您的查詢更改爲'通過EmerContact_id asc從[Table]順序中選擇EmerContact_id;' –

1

您可以在會話中存儲完整列表或數據集,但不推薦使用它,但可以這樣做。

提取時,您可以將其轉換爲所需的類型。

簡易

1

如果我明白你的問題....

請試試這個

string[] EmerContactList = new string[]{"Emer1","Emer2","Emer3"}; 
Session["values"] = EmerContactList ; 

要訪問

string[] results= (string[])Session["values"]; 
1

你也可以使用一個會話對象來存儲值...

List<int> EmerContacts = new List<int>(); 

using (MySqlConnection dbConnection = new MySqlConnection("connectionstring")) 
{ 
    using (MySqlCommand dbCommand = new MySqlCommand("select EmerContact_id from [Table];", dbConnection)) 
    { 
     using (MySqlDataReader dbReader = dbCommand.ExecuteReader()) 
     { 

      while (dbReader.Read()) 
      { 
       EmerContacts.Add((int)dbReader[0].ToString()); 

      } 
     } 
    } 
} 

Session["EmerContacts"] = EmerContacts; 

當您需要使用名單的話,你可以轉換會話回到列表...

List<int> myList = (List<int>)Session["EmerContacts"];

我手中輸入了一些,所以它可能無法編譯,但你應該得到它的要點。

當你使用這種方法時,你可以很容易地通過集合。使用你的方法會讓這一點變得更加困難。