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

Vb.Net结合MySQL按日期与ComboBox值筛选数据的SQL语法错误问题

报错翻译

原英文报错:
Additional information: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LIKE date(dateprocessed) between '2021-09-20' and '2021-09-25' WHERE projectcode' at line 1
中文含义:
附加信息:你的SQL语法存在错误,请查询与你使用的MySQL版本对应的官方手册,确认LIKE date(dateprocessed) between '2021-09-20' and '2021-09-25' WHERE projectcode 片段附近的语法是否正确


错误原因

  • SQL语句结构不符合MySQL规范:SELECT * FROM 表名 后需直接跟WHERE关键字声明过滤条件,你错误的将日期判断逻辑、多余的LIKE关键字放在了WHERE之前
  • 多重过滤条件需要用AND关键字拼接在WHERE子句内,不能分散写在WHERE前后
  • 直接拼接用户输入构造SQL的写法存在SQL注入风险,输入内容含特殊字符时也会触发语法错误

修复代码

推荐使用参数化查询写法,完全避免语法错误和注入风险:

' 构造参数化SQL语句,不直接拼接用户输入
Dim querySql As String = "SELECT * FROM loins WHERE DATE(dateprocessed) BETWEEN @startDate AND @endDate AND projectcode = @projectCode ORDER BY code ASC"
adapter.SelectCommand = New MySqlCommand(querySql, conn.getConnection)
' 给参数赋值,自动处理类型转义
adapter.SelectCommand.Parameters.AddWithValue("@startDate", DateTimePicker1.Value.ToString("yyyy-MM-dd"))
adapter.SelectCommand.Parameters.AddWithValue("@endDate", DateTimePicker2.Value.ToString("yyyy-MM-dd"))
adapter.SelectCommand.Parameters.AddWithValue("@projectCode", ComboBox1.Text)

补充说明

如果需要对projectcode做模糊匹配,将条件projectcode = @projectCode改为projectcode LIKE CONCAT('%', @projectCode, '%')即可,其他逻辑无需改动。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 02:24:03