からデータテーブルを埋めるために長い時間を取って、それは、コードと私はデータテーブルを取得する方法を作成したデータアダプタのC#
da.Fill(dt)
が、SQL Serverでのこの行の分以上を取っていました同じパラメータを使用すると、手順は1秒後に実行されます。
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;
}
'Proc_QCArticleDetails'を含むようにあなたの投稿を更新してください。また、通常は返されるレコード数を含めるように更新してください。 – mjwills
Yuck!文字列をintに解析するためにキャッチとtry-catchを空にするには、 'int.TryParse'を使います。また、 'SqlConnection'のように' IDisposable'を実装するすべてのものに対して 'using'ステートメントを使用してください。 –
質問を投稿してください。 SSMSで同じクエリを実行しないと確信しています。例えば、 'dtFrom'、' dtoTo'は日付のように見えますが、* string *型です。文字列が正しく解析されていますか?それらの文字列を日付フィールドまたは文字列フィールドと比較していますか?文字列の場合、重大なバグがあり、間違ったデータを返す可能性があります。 *適切に型付けされたパラメータを渡す*。 –