mysql - 如何在 USER/EMPLOYEE 超时前设置一个小时?VB.NET MYSQL
问题描述
问题/我想发生
1)如果员工/用户时间在她必须等待 3 或 5 小时才能超时
2) 如果她尝试超时少于 3 或 5 小时,她将收到一个他/她已经超时的消息框/标签
这是我的代码
getQuery = "SELECT dtr.time_in, dtr.date FROM dtr, employee WHERE employee.employee_id ='" & empid.Text & _
"'AND dtr.employee_id ='" & empid.Text & "' AND dtr.rfid ='" & txtRFID.Text & "' AND dtr.date ='" & Date.Now.ToString("yyyy-MM-dd") & "'"
getCommand = New MySqlCommand(getQuery, MySQLConnection)
getReader = getCommand.ExecuteReader
If getReader.Read = True Then
TimeIN = (getReader.Item("time_in").ToString)
getDate = (getReader.Item("date"))
End If
getReader.Close()
getQuery = "SELECT dtr.time_out, dtr.date FROM dtr, employee WHERE employee.employee_id ='" & empid.Text & "' AND dtr.employee_id ='" & _
empid.Text & "' AND dtr.rfid ='" & txtRFID.Text & "' AND dtr.date ='" & Date.Now.ToString("yyyy-MM-dd") & "'"
getCommand = New MySqlCommand(getQuery, MySQLConnection)
getReader = getCommand.ExecuteReader
If getReader.Read = True Then
TimeOUT = (getReader.Item("time_out").ToString)
getDate = (getReader.Item("date"))
End If
getReader.Close()
If TimeIN = "" Then
disableTimeOutColor()
TimeIN = Nothing
TimeOUT = Nothing
getDate = Nothing
ElseIf TimeIN <> "" And TimeOUT <> "" And getDate = Date.Today Then
TimeOUT = Nothing
TimeIN = Nothing
getDate = Nothing
ElseIf TimeIN <> "" Then
disableTimeINColor()
TimeIN = Nothing
TimeOUT = Nothing
getDate = Nothing
ElseIf TimeOUT = "" Then
disableTimeINColor()
TimeOUT = Nothing
TimeIN = Nothing
getDate = Nothing
ElseIf TimeOUT <> "" Then
disableTimeOutColor()
TimeOUT = Nothing
TimeIN = Nothing
getDate = Nothing
ElseIf TimeIN = "" And TimeOUT = "" And getDate = "" Then
disableTimeOutColor()
TimeOUT = Nothing
TimeIN = Nothing
getDate = Nothing
End If
解决方案
在编译选项卡的项目属性中打开 Option Strict。这将在您运行代码之前捕获许多潜在错误。
首先,您的查询。您只从一张表中进行选择,因此似乎没有任何理由引用员工表。使用参数重写这段代码非常重要;否则你很容易受到 SQL 注入的攻击。
Using cn As New MySqlConnection("Your connection string")
Dim getQuery As String = "SELECT dtr.time_out, dtr.date FROM dtr WHERE dtr.employee_id = @Id AND dtr.rfid = @rfid AND dtr.date = @date;"
Using cmd As New MySqlCommand(getQuery, cn)
cmd.Parameters.Add("@Id", MySqlDbType.Int32).Value = empid.Text
cmd.Parameters.Add("@rfid", MySqlDbType.Int32).Value = txtRFID.Text
cmd.Parameters.Add("@date", MySqlDbType.VarChar).Value = Date.Now.ToString("yyyy-MM-dd")
cn.Open()
Using dr As MySqlDataReader = cmd.ExecuteReader
If dr.Read Then
TimeOut = dr.Item("time_out").ToString
getDate = dr.Item("date")
End If
End Using
End Using
End Using
我猜到了数据类型。检查您的数据库以获取正确的类型。您似乎将数据值存储为字符串。日期应该真正存储为日期。
Using 语句可确保您的对象正确关闭和处置,即使出现错误也是如此。
如果不知道 TimeIn,我真的不能再进一步了。
推荐阅读
- python - 使用 pyinstaller 转换 python 脚本时出现问题。导入错误:库不兼容
- sql - Pandas 到 SQL 无法追加
- visual-studio - 当我构建我的分支时,AppCenter 向我显示一个错误(xamarin forms proj)
- r - 从其他所有列中减去 df 中的每个列
- django - Django 和 Nginx - 无效的 HTTP_HOST 标头
- c++ - 头文件中带有 enable_if 的模板的特化
- javascript - bootstrap.js 干扰单选按钮 D3 选择
- ios - 无法查看 Firebase Analytics 调试查看 React Native
- css - 如何自定义处于不确定状态的复选框的样式?
- java - 为什么在我的活动的 onCreate 中实例化工具栏时会出现问题?