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

WebForm数值查询实现:查找落在表两列数值区间内的对应行数据

WebForm单输入框数字区间搜索实现方案

1. 输入校验逻辑

  • 前端校验:给textbox添加正则限制,仅允许输入纯数字,正则规则为^[0-9]*$,避免非数值内容提交到后端。
  • 后端校验:拿到输入值后先做类型转换校验,转换失败直接返回非法输入提示,不执行后续查询逻辑。

2. 原有SQL问题修正

你现有SQL存在3个明显错误:

  1. BETWEEN语法使用错误,正确语法为目标值 BETWEEN 区间下限 AND 区间上限
  2. 直接拼接用户输入到SQL语句,存在严重SQL注入风险,所有涉及用户输入的SQL查询必须使用参数化写法,绝对禁止直接拼接输入内容,否则会导致数据库被拖库等严重安全问题
  3. 错误引用了第二个文本框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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 08:15:04