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

触发SqlException提示'='附近语法错误的原因是什么?

问题成因

  • 代码直接拼接用户输入的textBox1.Text生成SQL语句,当输入框内容为空、包含特殊字符、或输入不符合tID字段类型要求时,拼接后的SQL就会出现语法错误。
    例如输入框为空时,最终生成的SQL是select * from teacher where tID = ,等号后没有有效值,就会触发'='附近语法不正确的报错。
  • 直接拼接SQL还存在SQL注入的严重安全风险,恶意用户可通过构造特殊输入篡改SQL逻辑,非法操作数据库数据。

修复方案

改用参数化查询传递查询条件即可解决,修改后的代码如下:

private void button1_Click(object sender, EventArgs e)
{
    // 使用using自动释放数据库连接,避免资源泄漏
    using (SqlConnection con = new SqlConnection())
    {
        con.ConnectionString = "data source = LAPTOP-ULT25NKH; database = college;integrated security = True";
        SqlCommand cmd = new SqlCommand();
        cmd.Connection = con;
        // 用@tID作为参数占位符
        cmd.CommandText = "select * from teacher where tID = @tID";
        // 添加参数,框架会自动处理类型转义,避免语法错误和注入风险
        cmd.Parameters.AddWithValue("@tID", textBox1.Text);
        
        DataSet DS = new DataSet();
        SqlDataAdapter DA = new SqlDataAdapter(cmd);
        DA.Fill(DS);

        dataGridView1.DataSource = DS.Tables[0];
    }
}

补充建议:执行查询前可先对textBox1.Text做非空校验和格式校验,确认输入为合法的tID格式后再发起查询,进一步降低异常概率。

内容的提问来源于stack exchange,提问作者amandi yalapola

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 00:36:03