2

我得到了例外:

Like 运算符中的错误:字符串模式 'Blah [Blah Blah]' 无效。

它发生在我使用数据表Select方法的地方,如下所示:

DataRow[] rows = table.Select("X Like '" + y + "'");

我从阅读其他帖子中看到它是方括号。我读过的帖子说要避开方括号,但其中大多数都关注问题的根源,即开发人员可以轻松逃脱的硬编码字符串。

我正在从数据库中读取数据。我可以做一些y.replace("[", "\\[")我猜想会解决方括号问题的事情。但后来我想知道,如果数据库中的其他地方有一个带有 * 等的字符串怎么办?

其他人如何处理这个问题?我可以通过转义所有可能的非法字符来调用可以使字符串安全的东西,还是用转义的等价物手动替换它们?

4

1 回答 1

1

万一其他人遇到这种情况,这是我采用的解决方案。与上面 Frédéric 的建议相呼应,Jon Skeets 解决方案在这里Escaping special character in string in C#也是使用 DataTable.Select() 以外的东西,所以我使用了他的 LINQ 建议。

但是,我也遇到了这个答案Correct way to escape characters in a DataTable Filter Expression如果您确实想实现一种转义大多数可能的非法字符的方法,它确实提供了一些可以重用的代码。但是,因为您不知道在所有情况下哪个字符可能是非法的,所以我更喜欢不依赖此技术的解决方案。

于 2013-10-28T15:02:54.870 回答