我试图创建一个通用的SqlDataReader,将拥有33列的表格转化成一个列表。我希望每个列表项包含每行的所有33列值。
然而,我的代码将每个值分配给单独的列表项。所以,我有33,000个列表项,而不是1000个数据行。
我更喜欢使用列表而不是datatable,因为我需要比较的列表要简单得多。
如何使1000个列表项每个都有33个值?
然而,我的代码将每个值分配给单独的列表项。所以,我有33,000个列表项,而不是1000个数据行。
我更喜欢使用列表而不是datatable,因为我需要比较的列表要简单得多。
如何使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;
}
}
... 更新 ...
已更正为以下内容。它可以正确返回列表项。但是,我的列表包含33000个每个包含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
。 - choz