stringbuilder.tostring() 分配给 datatable.select() 并不总是有效,有什么想法吗?
stringbuilder.tostring() assigned to datatable.select() not always working, any ideas why?
DataRow[] dr = dataTable.select(stringbuilder.ToString());
这就是 selects 的代码。如果参数是string类型的话,就全是fine.But 如果恰好像上面这样,好像不是一直有效。直到昨天一切都很好,今天代码被破解了。
知道是什么原因造成的吗?我们选择了 stringbuilder,因为我们通过连接字符串
来构建 select 语句
select 语句的构造通过一个开关发生,我们比较相等性(我们正在应用过滤器)的示例如下:
select.AppendLine(filter.Column);
select.AppendLine(" ");
select.AppendLine(ComparisonOperatorsEnum.Equal);
select.AppendLine(" '");
select.AppendLine(filter.Value.ToString());
select.AppendLine("' ");
当你在 stringBuilder 中有单引号时,你应该使用
" \' "
所以修改stringBuilder的生成,让结果的值变成"COMPLETION_NAME\r\n \r\n=\r\n \'\r\nW890-CSG\r\n\' \r\n"
我建议将 AppendLine
更改为 Append
。此外,您还会面临 SQL 注入攻击。我建议
select.Append(Filter.Value.ToString().Replace("'", "\"");
这里不需要使用 AppendLine,您可以使用 AppendFormat 来构建您的 Select 过滤器
select.AppendFormat("{0} {1} '{2}'", filter.Column,
ComparisonOperatorsEnum.Equal,
filter.Value.ToString());
使用 AppendLine
自动回车 return/line 提要添加到附加字符串的末尾。因此,您的过滤器值包含两个回车符 returns 和可能不在您要搜索的字符串中的换行符。因此匹配失败,什么都没有 returns.
使用 AppendFormat
您可以更好地控制 select 过滤器的格式,尽管它可能比一系列追加要慢。但是,应该根据代码的清晰度来评估这种较低的性能。
DataRow[] dr = dataTable.select(stringbuilder.ToString());
这就是 selects 的代码。如果参数是string类型的话,就全是fine.But 如果恰好像上面这样,好像不是一直有效。直到昨天一切都很好,今天代码被破解了。
知道是什么原因造成的吗?我们选择了 stringbuilder,因为我们通过连接字符串
来构建 select 语句select 语句的构造通过一个开关发生,我们比较相等性(我们正在应用过滤器)的示例如下:
select.AppendLine(filter.Column);
select.AppendLine(" ");
select.AppendLine(ComparisonOperatorsEnum.Equal);
select.AppendLine(" '");
select.AppendLine(filter.Value.ToString());
select.AppendLine("' ");
当你在 stringBuilder 中有单引号时,你应该使用
" \' "
所以修改stringBuilder的生成,让结果的值变成"COMPLETION_NAME\r\n \r\n=\r\n \'\r\nW890-CSG\r\n\' \r\n"
我建议将 AppendLine
更改为 Append
。此外,您还会面临 SQL 注入攻击。我建议
select.Append(Filter.Value.ToString().Replace("'", "\"");
这里不需要使用 AppendLine,您可以使用 AppendFormat 来构建您的 Select 过滤器
select.AppendFormat("{0} {1} '{2}'", filter.Column,
ComparisonOperatorsEnum.Equal,
filter.Value.ToString());
使用 AppendLine
自动回车 return/line 提要添加到附加字符串的末尾。因此,您的过滤器值包含两个回车符 returns 和可能不在您要搜索的字符串中的换行符。因此匹配失败,什么都没有 returns.
使用 AppendFormat
您可以更好地控制 select 过滤器的格式,尽管它可能比一系列追加要慢。但是,应该根据代码的清晰度来评估这种较低的性能。