0

我有这个:

string a = "a+a";
SqlCommand q = new SqlCommand("SELECT * FROM table WHERE a = @a", conn);
q.Parameters.AddWithValue("@a", a);

但是参数化完全删除了 + from a,让我留下了a a而不是期望的a+a。我需要那个 + 到位;我只是希望它逃脱,而不是删除。

有没有办法告诉 C# 转义 + 而不是删除它?我正在使用 .NET Framework 2.0 并且没有升级选项。

4

3 回答 3

1

您需要为参数显式设置数据类型

于 2010-09-17T04:55:51.040 回答
1

而是尝试

q.Parameters.Add( "@a", SqlDbType.Text ).Value = a;

只要确定这是否是问题所在

于 2010-09-17T05:01:29.250 回答
0

谢谢大家。我不确定这里到底发生了什么,但我最终只是在存储之前用零替换了所有 + 符号。

我想我记得在查询字符串上传输了这个变量,但我不记得了。如果我这样做了,那么加号可能被 qs 解析器吃掉了,而不是参数化代码。你可能想检查一下。

我没有尝试指定数据类型,因为我很着急,将 + 替换为不会像 0 那样被吃掉的东西是最快的解决方案。

再次感谢所有贡献者。

于 2010-09-29T21:57:16.473 回答