【发布时间】:2011-12-06 09:18:11
【问题描述】:
朋友们, 我有一个动态 sql 查询,我想执行并返回一个列表。 从我在 goole 上的大部分互联网搜索中,我发现必须知道列表的类型才能将 sqldatareader 转换为列表。 当我不知道将执行什么查询时,我该怎么做。
Execute(String query)
{
SqlConnection con=new SqlConnection(connection);//connection from elsewhere
SqlCommand cmd = new SqlCommand(query);
cmd.connection=con;
con.Open();
SqlDataReader result=cmd.ExecuteReader();
//How to convert result to a list when i do not know the table structure
}
现在我想将结果转换为列表。 但是我不知道查询工作的表的详细信息。查询可能会有所不同,它可以查询任何表。 因此,在这些条件下,我如何将结果转换为列表。有可能吗?
这给我留下了一个简单的问题,如果我不知道表格的详细信息,那么列表的条目将是什么,或者它将是什么的列表?
为了回答这个问题,我问自己另一个问题,是否有可能有一个列表,其中每个列表条目将对应于 SqlDataReader 结果的一行?
所以我可以使用 List x =result.Select().ToList(),但我也不想使用它。
我希望列表的每个条目映射到结果的每一行,同时由构成一行的原子数据类型组成。
例如从学生中选择学生姓名、学生编号; 这将返回一个 SqlDataReader 结果,我想构造一个类型包含字符串和 int 的列表,然后用结果的行填充列表。
当查询变为select scores,subject,grade from tags where studentid=1432时,我想构造一个类型包含int,string,char的列表,然后用结果的行。
有办法吗?
PS 如果我返回上面详述的列表,用户知道如何选择值,因为他创建了查询并且知道预期有多少列。
【问题讨论】:
-
你不能使用 SqlTableAdapter 吗?您将获得 DataRow 的集合,以结果的架构为准
标签: .net list sqldatareader