获取当天、本周、本月相关的数据

本文介绍了一个基于ASP.NET的登录日志管理系统,利用RadioButtonList控件和枚举类型实现不同时间范围的日志查询,并提供了数据导出及删除功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在页面上用RadioButtonList控件,HTML代码如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="LoginLog.aspx.cs" Inherits="Admin_LoginLog"
    StylesheetTheme
="Default" Theme="Default" 
%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    
<title>登录日志</title>
</head>
<body>
    
<form id="form1" runat="server">
        
<fieldset>
            
<legend>相关设置</legend>
            
<div id="tabsF">
                
<ul>
                    
<li><href="Default.aspx" title="返回"><span>返回</span></a></li>
                
</ul>
            
</div>
        
</fieldset>
        
<fieldset>
            
<legend>登录日志</legend>
            
<!--注:此单选列表的值,不要轻易进行修改,
            由于,它和后台类库有直接的关联,进行修改
            可能会造成,不能正确地查询数据。
            
-->
            
<asp:RadioButtonList ID="rbtnLoginLog" runat="server" RepeatDirection="Horizontal"
                AutoPostBack
="True" OnSelectedIndexChanged="rbtnLoginLog_SelectedIndexChanged">
                
<asp:ListItem Value="0" Selected="True">今天</asp:ListItem>
                
<asp:ListItem Value="1">本周</asp:ListItem>
                
<asp:ListItem Value="2">本月</asp:ListItem>
                
<asp:ListItem Value="3">本年</asp:ListItem>
                
<asp:ListItem Value="4">全部</asp:ListItem>
            
</asp:RadioButtonList>
            
<asp:Button ID="btnOut" runat="server" Text="导出" OnClick="btnOut_Click" />
            
<asp:Button ID="btnDel" runat="server" Text="删除" OnClick="btnDel_Click" />
            
<asp:GridView ID="gvLoginLog" runat="server" AutoGenerateColumns="False" SkinID="Default_GridView">
                
<Columns>
                    
<asp:BoundField DataField="LoginTime" HeaderText="登录时间" />
                    
<asp:BoundField DataField="UserName" HeaderText="登录用户" />
                    
<asp:BoundField DataField="LoginIP" HeaderText="登录地址" />
                
</Columns>
            
</asp:GridView>
        
</fieldset>
    
</form>
</body>
</html>
 网页后面的页面代码如下:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class Admin_LoginLog : System.Web.UI.Page
{
    
public WebUtility.OutExcel myOut = new WebUtility.OutExcel();
    WebUtility.SysUser user 
= new WebUtility.SysUser();
    
protected void Page_Load(object sender, EventArgs e)
    
{
        
        
if (!Page.IsPostBack)
        
{
            
//默认显示的日志是当天的
            this.gvLoginLog.DataSource = user.DataSetLoginLog(WebUtility.SysUser.LoginLogType.today);
            
this.gvLoginLog.DataBind();
        }

    }


    
protected void rbtnLoginLog_SelectedIndexChanged(object sender, EventArgs e)
    
{
        
//通过枚举,进行设置数据源
        
//注: 此数据源和枚举值和页面的selectedvalue值保持一致
        this.gvLoginLog.DataSource = user.DataSetLoginLog((WebUtility.SysUser.LoginLogType)Convert.ToInt32(this.rbtnLoginLog.SelectedValue));
        
this.gvLoginLog.DataBind();
    }

    
protected void btnDel_Click(object sender, EventArgs e)
    
{
        WebUtility.Define.MessageBox(
this.Page,"您确定删除 "+this.rbtnLoginLog.SelectedItem.Text+" 的登录日志吗?");
        
//根据选择进行删除操作
        user.DeleteLoginLog((WebUtility.SysUser.LoginLogType)Convert.ToInt32(this.rbtnLoginLog.SelectedValue));
        
//设置数据源,进行数据绑定
        this.gvLoginLog.DataSource = user.DataSetLoginLog((WebUtility.SysUser.LoginLogType)Convert.ToInt32(this.rbtnLoginLog.SelectedValue));
        
this.gvLoginLog.DataBind();


    }

    
protected void btnOut_Click(object sender, EventArgs e)
    
{
        
//导出日志到Excel
        System.Data.DataTable dt = user.DataSetLoginLog(WebUtility.SysUser.LoginLogType.all).Tables[0];
        
string DownloadPath = Server.MapPath("."+ "//" + string.Format("登录日志备份{0}.XLS",System.DateTime.Now.ToShortDateString());
        
//导出
        this.myOut.Export(dt, DownloadPath);
        
//以下代码将 pdf 文件写入客户端浏览器。
        Response.ClearContent();
        Response.ClearHeaders();
        
//作为附件下载
        Response.AddHeader("Content-Disposition""attachment; filename=" + Server.UrlEncode(DownloadPath));
        Response.ContentType 
= "application/ms-excel";
        Response.WriteFile(DownloadPath);
        Response.Flush();
        Response.Close();
        
//从磁盘删除导出的文件
        System.IO.File.Delete(DownloadPath);
    }

}

相关的后台类库代码如下:
/// <summary>
        
/// 登录日志类型
        
/// </summary>

        public enum LoginLogType
        
{today,week,month,year,all};
        
/// <summary>
        
/// 登陆日志
        
/// </summary>
        
/// <param name="log">登录日志类型</param>
        
/// <returns>数据集</returns>

        public DataSet DataSetLoginLog(LoginLogType log)
        
{
            
string strSql = "";
            
switch ((int)log)
            
{
                
case 0:
                    strSql 
= "Select LoginTime,UserName,LoginIP From vw_Login_Users  where datename(day,logintime) = datename(day,getdate())";
                    
break;
                
case 1:
                    strSql
="Select LoginTime,UserName,LoginIP From vw_Login_Users  where datename(week,logintime) = datename(week,getdate())";
                    
break;
                
case 2:
                    strSql
="Select LoginTime,UserName,LoginIP From vw_Login_Users  where datename(month,logintime) = datename(month,getdate())";
                    
break;
                
case 3:
                    strSql
="Select LoginTime,UserName,LoginIP From vw_Login_Users  where datename(year,logintime) = datename(year,getdate())";
                    
break;
                
case 4:
                    strSql 
= "Select LoginTime,UserName,LoginIP From vw_Login_Users";
                    
break;
                
default:
                    strSql
="Select LoginTime,UserName,LoginIP From vw_Login_Users  where datename(day,logintime) = datename(day,getdate())";
                    
break;
            }

            
return base.ExecuteSQLDataSet(strSql, "loginlogtest");

        }

        
/// <summary>
        
/// 删除登录日志
        
/// </summary>
        
/// <param name="logType">登录日志类型</param>
        
/// <returns>删除影响的行数</returns>

        public int DeleteLoginLog(LoginLogType logType)
        
{
            
string strSql = "";
            
switch ((int)logType)
            
{
                
case 0:
                    strSql 
= "Delete From Login_Log  where datename(day,logintime) = datename(day,getdate())";
                    
break;
                
case 1:
                    strSql 
= "Delete From Login_Log  where datename(week,logintime) = datename(week,getdate())";
                    
break;
                
case 2:
                    strSql 
= "Delete From Login_Log  where datename(month,logintime) = datename(month,getdate())";
                    
break;
                
case 3:
                    strSql 
= "Delete From Login_Log  where datename(year,logintime) = datename(year,getdate())";
                    
break;
                
case 4:
                    strSql 
= "Delete From Login_Log";
                    
break;
                
default:
                    strSql 
= "Delete From Login_Log  where datename(day,logintime) = datename(day,getdate())";
                    
break;
            }

            
return base.ExecuteNonQuery(strSql, null);
        }

      以上实现方法,主要是利用枚举类型,将枚举类型的值和页面的RadioButtonList控件的Value值,设置同步,这样,当我们选择不同的类型时,通过后台的类库,获取不同的数据集。

好的,我理解了你的问题。使用 LambdaQueryWrapper 来查询数据库中当日、本周本月、本年的数据,可以通过以下方式实现: 1. 当日数据查询: ```java // 获取当日的起止时间 LocalDateTime start = LocalDateTime.of(LocalDate.now(), LocalTime.MIN); LocalDateTime end = LocalDateTime.of(LocalDate.now(), LocalTime.MAX); // 构建查询条件 LambdaQueryWrapper<Entity> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.between("create_time", start, end); // 执行查询 List<Entity> entityList = entityMapper.selectList(queryWrapper); ``` 2. 本周数据查询: ```java // 获取本周的起止时间 LocalDateTime start = LocalDateTime.now().with(DayOfWeek.MONDAY).with(LocalTime.MIN); LocalDateTime end = LocalDateTime.now().with(DayOfWeek.SUNDAY).with(LocalTime.MAX); // 构建查询条件 LambdaQueryWrapper<Entity> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.between("create_time", start, end); // 执行查询 List<Entity> entityList = entityMapper.selectList(queryWrapper); ``` 3. 本月数据查询: ```java // 获取本月的起止时间 LocalDateTime start = LocalDateTime.now().with(TemporalAdjusters.firstDayOfMonth()).with(LocalTime.MIN); LocalDateTime end = LocalDateTime.now().with(TemporalAdjusters.lastDayOfMonth()).with(LocalTime.MAX); // 构建查询条件 LambdaQueryWrapper<Entity> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.between("create_time", start, end); // 执行查询 List<Entity> entityList = entityMapper.selectList(queryWrapper); ``` 4. 本年数据查询: ```java // 获取本年的起止时间 LocalDateTime start = LocalDateTime.now().with(TemporalAdjusters.firstDayOfYear()).with(LocalTime.MIN); LocalDateTime end = LocalDateTime.now().with(TemporalAdjusters.lastDayOfYear()).with(LocalTime.MAX); // 构建查询条件 LambdaQueryWrapper<Entity> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.between("create_time", start, end); // 执行查询 List<Entity> entityList = entityMapper.selectList(queryWrapper); ``` 以上代码中,`Entity` 是你要查询的实体类,`entityMapper` 是对应的 Mapper 接口。在构建查询条件时,我们使用了 `between` 方法来指定时间范围,然后通过 `selectList` 方法来执行查询并返回结果。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值