在SQL字符串中使用文本框值出错,替换查询字段遇问题
解决SQL字符串拼接报错的问题
你之前的核心错误是给查询字段名加了单引号——数据库会把带单引号的内容当成普通字符串,而不是表的字段,自然会报错。另外Spare parts是带空格的字段名,必须用方括号[]括起来,否则数据库无法识别这个字段。
正确的字符串拼接写法应该是:
"Select " + textbox2.Text + " from table1 where [Spare parts] = '" + textbox1.Text + "'"
但必须严肃提醒:这种直接拼接用户输入的写法存在严重的SQL注入风险,绝对不建议在生产环境使用。更好的做法是用参数化查询处理条件值,字段名如果是用户输入的,要先验证是否为表中合法字段再拼接。比如用C#实现的示例:
// 先校验textbox2的输入是table1中存在的合法字段,防止注入 string validField = CheckValidField(textbox2.Text); string sql = $"Select {validField} from table1 where [Spare parts] = @SparePart"; SqlCommand cmd = new SqlCommand(sql, yourDatabaseConnection); cmd.Parameters.AddWithValue("@SparePart", textbox1.Text);
这样既解决了报错问题,又大幅提升了安全性。
内容的提问来源于stack exchange,提问作者Abdul H
相关产品推荐
相关产品推荐

