我有一个c#项目,我在其中调用MySQL查询,该查询是根据我发送给方法的字符串构建的。
如果字符串只有一个引用'
我想用\'
替换它,所以对MySQL来说是安全的
但是当我构建查询时,我在字符串的开头和结尾添加一个引号和%
;例如'%texthere%'
所以我需要知道如何替换除第一个和最后一个之外的每一个引用?
所以它只会替换为:'%thi'stext%'
对此:'%thi\'stext'%
答案 0 :(得分:4)
简单:
int first = s.IndexOf('\'');
int last = s.LastIndexOf('\'');
string prefix = s.Substring(0, first+1);
string query = s.Substring(first+1, last-first-1);
string suffix = s.Substring(last);
s = prefix + query.Replace("'", "\\'") + suffix;
当然,您应该确实使用SQL参数。
答案 1 :(得分:1)
我通过string.Replace("'", "\'")
在我添加%
& '
到开头%
&最后'
我从你们那里学到了很多,非常感谢
答案 2 :(得分:0)
首先使用trim函数从字符串的每一侧剪切单引号。然后将“'”替换为“\”,并将单引号添加回字符串的每一侧。如果'是字符串中的第一个或最后一个字符,因为它将被修剪,这将无效。
答案 3 :(得分:0)
我以前做过的方法如下:
使用(pseudoCode) -
重建字符串finalString = string.Concat( originalString.Substring(0,firstIndex), replacedSubstringFromStep5, originalString.Substring(secondIndex,originalStringLength - 1)
这将为您提供一个字符串,其中包含第一个'字符以及原始字符串中最后一个字符之后的任何内容,其间的所有内容都将是已替换的'现在为MySQL查询转义的字符。
希望这有帮助!
编辑:请注意,当我这样做时,它是用于链接应用程序中的字符串操作,而不是用于数据库查询。我同意最好使用存储过程和参数,正如其他人所说的那样;但是,我提供的解决方案,没有进入最佳实践等,将会做OP正在寻求的。
答案 4 :(得分:0)
Reffer bellow link
Strip double quotes from a string in .NET
Replace all double quotes withing String
希望这个人能帮到你 如果没有得到解决方案,请告诉我,我会给出另一种解决方案
修改强> 好吧,所以尝试这样的字符串并给予反馈
string query=@"%thi'stext%";
答案 5 :(得分:0)
我希望这种方法可以帮助您: 假设raw匹配模式“'%free text here here with single quotes%'”
private string ReplaceSpecial(string raw)
{
return String.Format("'%{0}%'", raw.Substring(2, raw.Length - 2).Replace("'", "\\'"));
}