MySQL解释生成的查询中的特殊字符

时间:2010-06-23 04:42:31

标签: c# .net mysql mysql-management

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

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

MySQL将上述字符串中的'\ b'解释为铃声字符,而SqlServer不解释任何此类转义字符。 MySQL中的解决方案 -

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

要在C#中执行此操作,我必须用\ b替换每个\ b或其他此类字符,考虑到我最终会做的此类转换的数量,这对我来说不是一个非常可行的选项。

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

提前致谢,
巴拉斯

1 个答案:

答案 0 :(得分: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
相关问题