VB.NET结合MySQL如何实现仪表板按当前日期统计展示预约数量
你现有代码存在两个核心问题:
- 直接拼接日期参数到SQL语句,会因.NET日期格式和MySQL日期字段格式不匹配导致查询无结果,同时存在SQL注入风险
- 未做异常捕获和资源自动释放,查询过程一旦报错会导致数据库连接泄漏
优化后可直接运行的代码:
' Using语句会自动释放数据库资源,无需手动调用Close方法 Using cn As New MySqlConnection("替换为你的实际数据库连接字符串") cn.Open() ' 使用参数化查询,规避SQL注入和日期格式匹配问题 Dim sql As String = "SELECT COUNT(*) FROM tblappointment WHERE `date` = @today" Using cm As New MySqlCommand(sql, cn) cm.Parameters.AddWithValue("@today", Date.Today) Dim appointmentCount As Long = CLng(cm.ExecuteScalar()) frmDashBoard.lblAppointment.Text = appointmentCount.ToString("#,##0") End Using End Using
注意事项:
- MySQL中
date是保留关键字,查询时用反引号包裹可避免语法报错 - 参数化查询会自动处理日期类型转换,无需手动拼接日期字符串,不会出现格式兼容问题
- 如果你表中的
date字段存储了时分秒信息,可将查询条件改为DATE(date) = @today,确保匹配当天所有时段的预约记录 - Using语句会在代码块执行结束后自动释放连接、命令对象的资源,即使执行过程中出现异常也不会出现连接占用的问题
内容的提问来源于stack exchange,提问作者Nel Banda
相关产品推荐
相关产品推荐

