我们如何使用SqlDataReader对象作为数组?

时间:2011-04-25 11:43:04

标签: asp.net

这可能听起来有点儿或者愚蠢,但我想知道在像......这样的代码中。

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

我们如何在没有声明的情况下将SqlDataReader对象用作数组(rdr[1])

我想知道的是,以下几行中发生了什么?

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

由于rdr是一个对象,我们如何使用方括号?

3 个答案:

答案 0 :(得分:1)

您正在寻找索引器。

请参阅this链接。

  

索引器是一种语法上的便利   使您能够创建一个类,   结构,或客户端的接口   应用程序可以像访问一样访问   阵列

参考:http://msdn.microsoft.com/en-us/library/2549tw02.aspx

答案 1 :(得分: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();

答案 2 :(得分:0)

不,因为SqlDataReader是来自SQL Server数据库的仅向前只读的行流,所以行的流将通过代码中的显式循环或隐藏在框架实现中来循环(例如DataTable的Load方法) 。所以你不能直接将它转换为数组类型。您需要将其转换为列表。

这听起来像使用通用列表然后将列表作为数组返回将是一个不错的选择。例如,

列表列表=新列表();

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

return list.ToArray();