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

C#使用string.Format拼接SQL时第二个单引号无法显示问题求解

C#拼接SQL语句缺失末尾单引号问题排查

核心原因排查

  • 大概率是你传入的currentIngredentFromList变量末尾携带了\0空终止符:C#本身的字符串是带长度标识的,但调试器、日志输出等工具遇到\0会默认识别为字符串结束,你拼接在后面的单引号刚好在\0之后,就会被截断看不到。
    排查方法:断点查看currentIngredentFromList.Length,如果长度比你肉眼看到的字符串长度多1,就可以确认是这个问题。
    修复方法:先清理变量里的空字符再拼接:
    currentIngredentFromList = currentIngredentFromList.TrimEnd('\0');
    string commandString = string.Format("Select* from dbo.tblIndiviualFoods where foodName = '{0}'", currentIngredentFromList);
    
  • 次要排查方向:检查生成commandString之后,是否有调用Substring、Remove、Replace等修改字符串的操作,意外删掉了末尾的单引号。

最优实践建议

不要用字符串拼接的方式生成SQL语句,不仅容易出现单引号转义问题,还存在SQL注入风险,推荐使用参数化查询:

// 假设你用的是SqlClient
using (SqlCommand cmd = new SqlCommand("Select * from dbo.tblIndiviualFoods where foodName = @FoodName", yourDbConnection))
{
    cmd.Parameters.AddWithValue("@FoodName", currentIngredentFromList);
    // 后续执行查询逻辑即可
}

参数化查询会自动处理特殊字符转义,完全不需要手动处理单引号,同时可以避免注入风险。

内容的提问来源于stack exchange,提问作者Alex West

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 14:30:00