You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET如何实现登录登出日志历史记录并保存至MySQL数据库

首先你需要先完成2项前置准备:

  1. 给logsrecord表新增一个LoggedOut字段,字段类型与LoggedIn一致,设为VARCHAR即可,用于存储登出时间
  2. 存储当前登录的用户名,方便登出时定位对应日志记录:你可以在跳转的Form3代码顶部定义公共变量,代码如下:
' 写在Form3代码的最上方,所有Sub之外
Public CurrentLoginUsername As String

然后修改你原有登录代码里的跳转逻辑,给这个变量赋值:

' 原有逻辑里的Form3.Show()之前加这行
Form3.CurrentLoginUsername = Username.Text
Form3.Show()
Me.Hide()

接下来是登出按钮的代码,逻辑为更新对应用户当天最新的未填写登出时间的日志记录,写入当前登出时间:

Private Sub Button_Logout(sender As Object, e As EventArgs) Handles Button_Logout.Click
    ' 可选:增加登出确认
    If MessageBox.Show("确认要登出吗?", "登出提示", MessageBoxButtons.YesNo) <> DialogResult.Yes Then
        Exit Sub
    End If

    Using con As New MySqlConnection("server=localhost;username=root;password=;database=logsrecord"),
          cmd As New MySqlCommand("UPDATE loghistory.logsrecord SET LoggedOut = @LoggedOut WHERE Username = @Username AND Date = @Date AND LoggedOut IS NULL ORDER BY LoggedIn DESC LIMIT 1", con)
        cmd.Parameters.Add("@Username", MySqlDbType.VarChar).Value = CurrentLoginUsername
        cmd.Parameters.Add("@Date", MySqlDbType.VarChar).Value = DateTime.Now.ToString("MMM-dd-yyyy")
        cmd.Parameters.Add("@LoggedOut", MySqlDbType.VarChar).Value = TimeOfDay.ToString("hh:mm:ss")
        con.Open()
        cmd.ExecuteNonQuery()
    End Using

    ' 登出后回到登录页逻辑
    Me.Close()
    Form1.Show() ' 替换为你实际的登录窗体名称
End Sub

补充优化建议

  • 建议将表中Date、LoggedIn、LoggedOut字段替换为MySQL的DATETIME类型存储,不需要手动转字符串,后续统计用户登录时长、筛选跨天登录记录会更方便
  • 可以在窗体的FormClosing事件中也加入上述登出逻辑,避免用户直接关闭窗体没有点击登出按钮导致登出时间缺失

内容的提问来源于stack exchange,提问作者melen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 15:24:10