我目前正在开发一个活动输入页面,员工可以将每天放入某个项目的小时数 - 但这个页面需要很多时间的时间加载!我的一个ASP.NET页面需要很长时间才能加载
这里就是需要时间:
public bool ExistUserActivity(int iYear, int iMonth, IEnumerable<string> sDays, int iProjectId, string Login)
{
bool strRet = false;
try
{
foreach (string s in sDays)
{
string[] values = s.Split(' ');
string strQuery = "SELECT ProjectId FROM UserActivity WHERE CalendarDate = '" + (new DateTime(iYear, iMonth, int.Parse(values[1]))).ToString("yyyy/MM/dd") + "'"; //We 2 donne [0] We et [1] 2
strQuery += " AND ProjectId = " + iProjectId + "";
strQuery += " AND Login = '" + Login + "'";
OleDbDataAdapter mDB_DataAdapter = new OleDbDataAdapter(strQuery, m_strConnectionString);
DataSet mDB_DataSet = new DataSet();
mDB_DataSet.CaseSensitive = false;
mDB_DataAdapter.Fill(mDB_DataSet, "UserActivity"); //It seems to take time after this
strRet = (mDB_DataSet.Tables["UserActivity"].Rows.Count > 0);
mDB_DataAdapter = null;
}
}
catch (Exception ex)
{
}
return strRet;
}
有没有人有任何想法,问题可能来自于,如何解决呢?
您正在为可枚举中的每个sDay执行一个SQL查询。如果你在这个枚举中有多个项目,这很容易导致延迟 - 特别是如果SQL服务器位于不同的机器上。 – Coda17
哦,我明白了,这不是我的源代码,所以我想知道(实习的第一年比较学生)。可能没有足够的信息来找到更快的方式来做到这一点,是吗? – Christopher
并修复SQL注入,而你在它 – Fredou