輸入條件:1.錯誤層級;2.開始時間;3.結束時間。
分頁樣式:1.當前頁碼;2.一頁的行數。
step1:擷取SQL語句條件部分:
A-> “日誌表”左連“使用者表”在使用者_ID欄位上:
FROM sys_log sl LEFT JOIN mem_user mu ON sl.user_id=mu.id
B-> 條件:
WHERE sl.id is not null
1.錯誤層級;
sql.Append(" AND sl.log_level=@log_level");
sqlParameterList.Add(new SqlParameter("@log_level", condition.LogLevel));
2.開始時間;
sql.Append(" AND sl.record_time>='" + condition.BeginDate.Value.ToString("yyyy-MM-dd") + " 00:00:00'");
3.結束時間
sql.Append(" AND sl.record_time<='" + condition.EndDate.Value.ToString("yyyy-MM-dd") + " 23:59:59'");
step2:擷取該條件下記錄總行數:(List<SqlParameter> sqlParameterList)
string sqlCount = "SELECT COUNT(*) " + sql.ToString();
step3:擷取該條件下 再加分頁條件(List<SqlParameter> sqlParameterList此時必須備份複製,不然會跑“對象被佔用”錯誤)
A->擷取拼接後的欄位:SELECT sl.* ,mu.name AS user_name
B->設立行號欄位:ROW_NUMBER() OVER (ORDER BY sl.record_time) AS rowindex (FROM sys_log sl LEFT JOIN mem_user mu ON sl.user_id=mu.id)
C->分頁條件下,行號範圍條件: WHERE temptb.rowindex BETWEEN " + page.BeginPageIndex + " AND " + page.EndPageIndex
step4:合格記錄存入DataTable--》List
DataTable-------》(DataRow)------------》(LogDetail)---------------》List
DataTable dt =查詢的結果;
List<Model.Log.LogDetail> logList = new List<Model.Log.LogDetail>();
foreach (DataRow dr in dt.Rows)
{
Model.Log.LogDetail log = new Model.Log.LogDetail();
log.Level = (Model.Log.LogLevel)Convert.ToInt32(dr["log_level"]);
log.Source = Convert.ToString(dr["source"]);
log.Type = (Model.Log.LogType)Convert.ToInt32(dr["log_level"]);
log.Content = Convert.ToString(dr["content"]);
log.RecordTime = Convert.ToDateTime(dr["record_time"]);
log.UserID = Convert.ToInt32(dr["user_id"]);
log.UserName = Convert.ToString(dr["user_name"]);
logList.Add(log);
}