如何在MySQL Document Store中查找表达式中的字符串?

时间:2017-08-17 13:48:33

标签: c# mysql escaping nosql

我正在使用MySQL文档存储,我无法弄清楚如何在查找语句中正确转义带有特殊字符的字符串。

Visual C#2015 Connector / NET:8.0.8.0

var realmName = "Aman'Thul";
var realm = collection.Find("Name = :name")
    .Bind("name", realmName).Limit(1).Execute().FetchOne();

=> System.ArgumentException: Unterminated string starting at 4

问题显然是撇号,但其他特殊字符和#34;像括号,连字符等。

版本#2:

var realmName = "Aman''Thul";
var realm = collection.Find("Name = :realmName").Bind("realmName", realmName).Limit(1).Execute().FetchOne();

=> System.ArgumentException: Only 1 tokens consumed, out of 3

版本#3:

var realmName = "Aman\\'Thul";
var realm = collection.Find("Name = :realmName").Bind("realmName", realmName).Limit(1).Execute().FetchOne();

=> System.ArgumentException: Can't parse at pos: 4

此时我没有想法。正确地逃避这些表达的正确方法是什么?必须有一些我似乎无法找到的通用解决方案,因为有关MySQL文档存储的信息很少。

1 个答案:

答案 0 :(得分:1)

正如评论中所讨论的那样 - 您似乎需要自己将字词包装在字符串文字中,因为它不会自动执行此操作。它可以逃避该字符串的内容,因此不需要为了MySQL原因而逃避任何事情,只能逃避C#的原因。像这样:

var realmName = "\"Aman'Thul\"";