2011-04-25 17 views
1

這聽起來kiddish或愚蠢,但我想知道,在這樣的代碼..我們如何使用SqlDataReader obejct作爲數組?

SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection); 
rdr.Read(); 
Response.Write(rdr[1]. ToString()); 

我們如何使用SqlDataReader對象數組(rdr[1])沒有申報?

我想知道的是,以下行中發生了什麼?

Response.Write(rdr[1].ToString()); 

由於rdr是一個對象,我們如何能夠使用方括號?

回答

0

你可以做這樣的事情。

Object[] values = new Object[reader.FieldCount]; 
int fieldCount = reader.GetValues(values); 

Console.WriteLine("reader.GetValues retrieved {0} columns.", 
    fieldCount); 
for (int i = 0; i < fieldCount; i++) 
    Console.WriteLine(values[i]); 

Console.WriteLine(); 
+0

請檢查我編輯的問題 – vatspoo 2011-04-25 12:07:44

0

沒有,因爲SqlDataReader的是從SQL Server數據庫中的行只進只讀流,行的流將通過被環無論是在您的代碼或隱藏在一個框架實現(如DataTable的Load方法)。所以你不能直接將它轉換爲數組類型。您需要將其轉換爲列表。

聽起來像使用通用列表,然後返回列表作爲數組將是一個不錯的選擇。例如,

List list = new List();

while (rdr.Read()) 
{ 
    list.Add(rdr.GetInt32(0)); 
}  

return list.ToArray();

+0

請檢查我編輯的問題 – vatspoo 2011-04-25 12:08:33

相關問題