C# 在使用存储过程时,如何避免设置固定的缓冲区大小?

C# 在使用存储过程时,如何避免设置固定的缓冲区大小?,c#,sql,asp.net-mvc,sql-server-2008,stored-procedures,C#,Sql,Asp.net Mvc,Sql Server 2008,Stored Procedures,我的ASP.NET MVC intranet中有此功能,它以每周范围显示员工的工作量。此WeeklyMonitoring页面具有一个存储过程,可根据所选周选择以下信息:公司、名称、预期工作时间和记录时间 以下是我如何调用此存储过程以及如何保存所选数据: conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString

我的ASP.NET MVC intranet中有此功能,它以每周范围显示员工的工作量。此
WeeklyMonitoring
页面具有一个存储过程,可根据所选周选择以下信息:
公司
名称
预期工作时间
记录时间

以下是我如何调用此存储过程以及如何保存所选数据:

 conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString);
 conn.Open();

 SqlCommand cmd = new SqlCommand("spGetWeeklyActivityByEmployee", conn);
 cmd.CommandType = CommandType.StoredProcedure;

 cmd.Parameters.Add(new SqlParameter("@startDate", wk1)); //wk1 is the starting week of the time range
 cmd.Parameters.Add(new SqlParameter("@endDate", wk2)); //wk2 is the ending week of the time range

 rdr = cmd.ExecuteReader();

 string[] tab_company = new string[9999];
 string[] tab_name = new string[9999];
 string[] tab_expectedtime = new string[9999];
 string[] tab_rectime = new string[9999];

 int counter;
 counter = 0;

 while (rdr.Read())
 {
     tab_company[counter] = rdr["Company"].ToString();
     tab_name[counter] = rdr["Name"].ToString();
     tab_expectedtime[counter] = rdr["Expected Time"].ToString();
     tab_rectime[counter] = rdr["Recorder Time"].ToString();

     counter++;
 }
作为所有这些技术的新手(无论是ASP.NET MVC还是SQL Server 2008),我没有找到一种方法来避免为我的
string[]
s设置固定的缓冲区大小


这样的事情可能发生吗?如何根据数据从数据库中检索到的缓冲区大小来检索数据?

需要使用ExtExeSCALAR进行计数,但最好可以使用泛型列表。请考虑使用具有四个属性的<代码>类< <代码>(例如“代码>工作负荷< /代码>”)。(
公司
名称
预期时间
记录时间
)然后考虑使用数组以外的其他东西来存储结果,比如说<代码>列表>代码>。达米安上面提供的解决方案是最好的选择,但是如果你不想做很多修改,你可以像列表TabyCopysNeXList.那样,而不是在while循环中,像TabyCopy.Additer(RDR[公司])。谢谢你的帮助,我会看看Damiens的想法,但我也会看看你的。这两个看起来都很完美,但是我肯定会选择最有效的。你需要使用ExcExtEaskar来计数,但最好你可以使用泛型列表。考虑使用具有四个属性的<代码>类< <代码>(例如<代码>工作负荷< /代码>)。(
公司
名称
预期时间
记录时间
)然后考虑使用数组以外的其他东西来存储结果,比如说<代码>列表>代码>。达米安上面提供的解决方案是最好的选择,但是如果你不想做很多修改,你可以像列表TabyCopysNeXList.那样,而不是在while循环中,像TabyCopy.Additer(RDR[公司])。;谢谢你的帮助,我会研究达米恩的想法,但我也会看看你的。两者看起来都很完美,但我肯定会选择最有效的。