虽说mysql-connector-net(MySql.Data.dll,MySql的数据对象的.net提供器)一直编译不了,手上有两个版本5.1.4和5.2.2都编译不了,于是今天干脆找了找方法,彻底的把这个问题解决掉。
该问题是由MySqlString中的EscapeString方法中有编译造成的,具体请看:
Code
private string EscapeString(string s)
{
s = s.Replace("\\", "\\\\");
s = s.Replace("\'", "\\\'");
s = s.Replace("\"", "\\\"");
s = s.Replace("`", "\\`");
s = s.Replace("?, "\\?);
s = s.Replace("?, "\\?);
s = s.Replace("?, "\\?);
return s;
}
其实方法也很简单,只是一时没有想到,只需要使用reflector查看MySqlString这个类,把正确的反编译后的代码复制出来就行,以下就是正确的代码:
Code
private string EscapeString(string s)
{
s = s.Replace(@"\", @"\\");
s = s.Replace("'", @"\'");
s = s.Replace("\"", "\\\"");
s = s.Replace("`", @"\`");
s = s.Replace("\x00b4", "\\\x00b4");
s = s.Replace("’", @"\’");
s = s.Replace("‘", @"\‘");
return s;
}