我已经创建了一个获取数据表的方法,这段代码需要花费一分多钟时间
da.Fill(dt)
但在SQL Server中,使用相同的参数,该过程将在一秒内执行:
protected DataTable RetrieveDataTable(string staffId, string
DtFrom, string DtTo, string Stm, string JrId,int ActiveFlag)
{
dt = new DataTable();
SqlConnection Conn = new SqlConnection(ConfigurationManager.AppSettings["Conn"]);
Conn.Open();
SqlCommand cmd = new SqlCommand();
SqlDataAdapter da = new SqlDataAdapter();
try
{
cmd = new SqlCommand("Proc_QCArticleDetails", Conn);
cmd.Parameters.Add(new SqlParameter("@StaffId", staffId));
cmd.Parameters.Add(new SqlParameter("@FrmDt", DtFrom));
cmd.Parameters.Add(new SqlParameter("@ToDt", DtTo));
cmd.Parameters.Add(new SqlParameter("@ActiveFlag", ActiveFlag));
try
{
int jrid = Convert.ToInt32(JrId);
cmd.Parameters.Add(new SqlParameter("@journalId", JrId));
}
catch (Exception)
{
}
cmd.Parameters.Add(new SqlParameter("@Statement", Stm));
cmd.CommandTimeout = 250;
cmd.CommandType = CommandType.StoredProcedure;
da.SelectCommand = cmd;
da.Fill(dt); // taking a long time to run here
}
catch (Exception x)
{
MessageBox.Show(x.ToString());
}
finally
{
cmd.Dispose();
Conn.Close();
}
return dt;
}
答案 0 :(得分:0)
请看下面的讨论。 Adapter.Fill takes long
根据这篇文章,由于添加参数的方法可能会有问题。
另请使用评论中建议的Using
和int.TryParse
。
答案 1 :(得分:0)
即使过程以秒为单位执行也需要很长时间来填充数据表(da.fill(dt)),我无法找到确切的问题,但我解决了 删除存储过程中的条件和使用数据视图在C#中过滤数据表最后问题已解决。