【发布时间】:2015-09-03 12:09:39
【问题描述】:
我目前正在开发一个活动输入页面,员工可以在其中输入他们每天在某个项目中投入的小时数 - 但这个页面需要很长时间才能加载!
这里需要时间:
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 服务器位于不同的计算机上。
-
哦,我明白了,这不是我的源代码,所以我想知道(第一年 comp. sci. 实习生)。可能没有足够的信息来找到更快的方法,是吗?
-
并在您使用时修复 sql 注入
-
SQL 注入?从我刚刚阅读的内容来看,这是一个安全问题,我是新手,所以我会调查一下。谢谢。
标签: c# sql asp.net .net asp.net-mvc