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

时间:2010-09-13 10:52:32

标签: c# .net winforms

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

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

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

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

1 个答案:

答案 0 :(得分:1)

我认为BindingSource.Filter的'正确'方式是简单地使用''转义单引号,听起来很可怕。例如,像。

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

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

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

从该链接:

  

应该附上字符串值   在单引号内(和   每个单引号字符   字符串值必须被转义   用另一个单词加前面   引用字符)。