使用BindingSource的Filter属性时如何正确地转义SQL

我inheritance了一个C#应用程序,它通过DataGridView列出数据库表中的数据。 还有一些用于过滤该数据的文本字段。 这样做是这样的:

String listFilter = string.Format("City = '{0}'", this.toolStripSearch.Text); this.customersBindingSource.Filter = listFilter; 

toolStripSearch是一个用于按城市名称搜索的文本字段。 问题是没有SQL转义。 在该字段中添加引用会使应用程序崩溃。

在这里转发SQL的正确方法是什么?

我认为BindingSource.Filter的’正确’方法就是简单地使用''来躲避单引号,就像听起来那么可怕。 比如,像。

 String listFilter = string.Format("City = '{0}'", this.toolStripSearch.Text.Replace("'", "''")); this.customersBindingSource.Filter = listFilter; 

BindingSource绑定到数据库中的数据时, Filter属性使用与DataColumn表达式相同的语法。

http://msdn.microsoft.com/en-us/library/system.windows.forms.bindingsource.filter.aspx

您可以在此处找到有关所需语法的文档:

http://msdn.microsoft.com/en-us/library/system.data.datacolumn.expression.aspx

从该链接:

字符串值应该用单引号括起来(字符串值中的每个单引号字符必须通过在前面加上另一个单引号来转义)。