在Visual Studio 2015中使用DateTimePicker编写Between日期过滤SQL查询求助
解决DateTimePicker日期范围筛选的SQL查询问题
先帮你梳理下现有代码里的几个问题:
- 拼写错误:
BEETWEEN被写成了BEETWEEN(多了个E) - Between语法误用:正确格式是
字段名 BETWEEN 起始值 AND 结束值,不需要重复写字段名 - 直接拼接日期字符串可能导致格式不兼容,还存在SQL注入风险
修正后的基础语法写法(仅做语法修复,不推荐用于生产环境)
先把语法改对,注意不同数据库的日期包裹符:Access用#,SQL Server用单引号',这里以Access为例:
Call KONEKSI() CMD = New OleDbCommand("SELECT * FROM Pembayaran WHERE tanggal_pembayaran BETWEEN #" & DTPDari.Value.ToString("yyyy-MM-dd") & "# AND #" & DTPSampai.Value.ToString("yyyy-MM-dd") & "#", CONN) DR = CMD.ExecuteReader() DR.Read()
要是用的是SQL Server等数据库,把代码里的
#替换成单引号'即可。
推荐写法:参数化查询(安全且避免格式坑)
直接拼接字符串有SQL注入风险,用参数化查询能彻底规避这个问题,还不用纠结日期格式适配:
Call KONEKSI() CMD = New OleDbCommand("SELECT * FROM Pembayaran WHERE tanggal_pembayaran BETWEEN @StartDate AND @EndDate", CONN) ' 绑定日期参数 CMD.Parameters.AddWithValue("@StartDate", DTPDari.Value.Date) CMD.Parameters.AddWithValue("@EndDate", DTPSampai.Value.Date) DR = CMD.ExecuteReader() DR.Read()
补充个小细节:如果你的tanggal_pembayaran字段包含时间部分,用.Date属性可以只取日期部分,确保筛选的是完整的日期范围(不会漏掉当天晚些时候的数据)。
内容的提问来源于stack exchange,提问作者lihenz
相关产品推荐
相关产品推荐

