mysql-connector-net 源代码中有编码导至编译不通过的解决办法

本文解决了mysql-connector-net(MySql.Data.dll)在编译过程中遇到的问题,特别是由于MySqlString类中的EscapeString方法导致的错误。通过使用reflector工具反编译正确版本的代码,最终成功解决了编译失败的情况。

虽说mysql-connector-net(MySql.Data.dll,MySql的数据对象的.net提供器)一直编译不了,手上有两个版本5.1.4和5.2.2都编译不了,于是今天干脆找了找方法,彻底的把这个问题解决掉。

该问题是由MySqlString中的EscapeString方法中有编译造成的,具体请看:

 

ContractedBlock.gif ExpandedBlockStart.gif 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这个类,把正确的反编译后的代码复制出来就行,以下就是正确的代码:


ContractedBlock.gif ExpandedBlockStart.gif 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;
        }

转载于:https://www.cnblogs.com/jinyong/archive/2008/08/16/1269100.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值