2010-06-23 37 views
1

我正在尝试使用MySql.data.dll将我们的框架的数据库层从SQLServer迁移到MySQL。我在MySQL以下生成的查询:MySQL解释生成的查询中的特殊字符

select * from `user` where `user_domainname` = 'domain\beth'; 

MySQL是解释在上述字符串作为响铃字符而SqlServer的不解释任何这样的转义字符的“\ B”。在MySQL对此的解决方案 -

select * from `user` where `user_domainname` = 'domain\\beth'; 

在C#中做到这一点,我将不得不更换每\ B或其他类似的字符\ B的不会是一个非常可行的选择,我考虑这样的数量我最终会做的转变。

所以我的问题是 - MySQL中是否有任何选项来避免它在数据库级别解释这些特殊字符。如果没有,我可以使用什么API来执行这样的转换。我没有检查MySqlHelper类,但找不到有用的东西。

由于提前,
巴拉斯

回答

3

与MySQL 5.0.1开始,你可以设置NO_BACKSLASH_ESCAPES打开反斜杠又一个普通的字符。确保你永远不要依赖于其他地方的反斜杠!

要做到这一点的现场服务器上(直到它重新启动):

SET GLOBAL sql_mode='NO_BACKSLASH_ESCAPES'; 

不要忘了将它添加到你的MySQL配置文件(my.cnf中的my.ini或),所以它在生效下一次启动!添加线

sql-mode=NO_BACKSLASH_ESCAPE