2010-06-23 35 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