我继承了一个C#应用程序,它通过DataGridView列出数据库表中的数据。还有一些用于过滤该数据的文本字段。这样做是这样的:
String listFilter = string.Format("City = '{0}'", this.toolStripSearch.Text);
this.customersBindingSource.Filter = listFilter;
toolStripSearch是一个用于按城市名称搜索的文本字段。问题是没有SQL转义。在该字段中添加引号会使应用程序崩溃。
在这里转发SQL的正确方法是什么?
答案 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
从该链接:
应该附上字符串值 在单引号内(和 每个单引号字符 字符串值必须被转义 用另一个单词加前面 引用字符)。