【发布时间】:2016-06-27 01:42:24
【问题描述】:
我正在尝试创建一个通用 SqlDataReader,它将具有 33 列的表转换为列表。我希望每个列表项包含每行的所有 33 个列值。
但是,我的代码将每个值分配给单个列表项。
因此,我有 33,000 个列表项,而不是 1000 个列表项 = 1000 行数据。
我更喜欢使用列表而不是数据表,因为我需要做的列表比较要简单得多。
如何拥有 1000 个列表项,每个列表项有 33 个值?
public static List<string> loadSQL(String query, String connectString)
{
List<string> dataList = new List<string>();
using (SqlConnection connection = new SqlConnection(connectString))
{
using (SqlCommand command = new SqlCommand(query, connection))
{
connection.Open();
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
for (int i = 0; i < reader.FieldCount; i ++)
{
dataList.Add(Convert.ToString(reader.GetValue(i)));
}
}
}
}
return dataList;
}
}
...更新...
更正如下。它正确返回列表项。但是,我的列表包含 33,000 个项目,每个项目包含 33 个项目。如何控制循环使其在 1000 行后停止?
using (SqlConnection connection = new SqlConnection(connectString))
{
using (SqlCommand command = new SqlCommand(query, connection))
{
connection.Open();
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
List<string> tempRow = new List<string>();
for (int i = 0; i < reader.FieldCount; i ++)
{
tempRow.Add(Convert.ToString(reader.GetValue(i)));
}
dataList.Add(tempRow);
}
}
}
}
【问题讨论】:
-
顺便说一句,您在处理您的
connection之前返回dataList。
标签: c# .net sqldatareader