这可能听起来有点儿或者愚蠢,但我想知道在像......这样的代码中。
SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
rdr.Read();
Response.Write(rdr[1]. ToString());
我们如何在没有声明的情况下将SqlDataReader
对象用作数组(rdr[1])
?
我想知道的是,以下几行中发生了什么?
Response.Write(rdr[1].ToString());
由于rdr是一个对象,我们如何使用方括号?
答案 0 :(得分:1)
答案 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();