WebForm数值查询实现:查找落在表两列数值区间内的对应行数据
WebForm单输入框数字区间搜索实现方案
1. 输入校验逻辑
- 前端校验:给textbox添加正则限制,仅允许输入纯数字,正则规则为
^[0-9]*$,避免非数值内容提交到后端。 - 后端校验:拿到输入值后先做类型转换校验,转换失败直接返回非法输入提示,不执行后续查询逻辑。
2. 原有SQL问题修正
你现有SQL存在3个明显错误:
- BETWEEN语法使用错误,正确语法为
目标值 BETWEEN 区间下限 AND 区间上限 - 直接拼接用户输入到SQL语句,存在严重SQL注入风险,所有涉及用户输入的SQL查询必须使用参数化写法,绝对禁止直接拼接输入内容,否则会导致数据库被拖库等严重安全问题
- 错误引用了第二个文本框
TxtSearch2,和你描述的「仅1个搜索textbox」的需求不符
3. 正确实现示例(C# WebForm)
// 后端输入校验 if(!int.TryParse(TxtSearch.Text.Trim(), out int searchNum)) { // 可替换为你项目里的弹窗/提示逻辑 ClientScript.RegisterStartupScript(GetType(), "tip", "<script>alert('请输入合法的数字')</script>"); return; } // 参数化查询(完全避免SQL注入) string connectionString = "替换为你的数据库连接字符串"; string querySql = "SELECT * FROM SSPRequest WHERE @SearchNum BETWEEN StartingSeries AND EndingSeries"; using(SqlConnection conn = new SqlConnection(connectionString)) { using(SqlCommand cmd = new SqlCommand(querySql, conn)) { // 传入参数,自动处理类型转义 cmd.Parameters.AddWithValue("@SearchNum", searchNum); conn.Open(); // 读取查询结果 SqlDataAdapter adapter = new SqlDataAdapter(cmd); DataTable resultDt = new DataTable(); adapter.Fill(resultDt); // 绑定结果到展示控件,比如GridView、Repeater等 YourDisplayControl.DataSource = resultDt; YourDisplayControl.DataBind(); } }
内容的提问来源于stack exchange,提问作者Otep18
相关产品推荐
相关产品推荐

