Tsql SqlCommand参数+;

Tsql SqlCommand参数+;,tsql,sqlcommand,parameterization,Tsql,Sqlcommand,Parameterization,我有这个: string a = "a+a"; SqlCommand q = new SqlCommand("SELECT * FROM table WHERE a = @a", conn); q.Parameters.AddWithValue("@a", a); 但是参数化完全删除了a中的+,留下a而不是所需的a+a。我需要那个+到位;我只想让它逃脱,而不是移除 有没有办法让C#避开+而不是删除它?我使用的是.NET Framework 2.0,没有升级选项。您需要明确设置参数的数据类型,而

我有这个:

string a = "a+a";
SqlCommand q = new SqlCommand("SELECT * FROM table WHERE a = @a", conn);
q.Parameters.AddWithValue("@a", a);
但是参数化完全删除了
a
中的+,留下
a
而不是所需的
a+a
。我需要那个+到位;我只想让它逃脱,而不是移除


有没有办法让C#避开+而不是删除它?我使用的是.NET Framework 2.0,没有升级选项。

您需要明确设置参数的数据类型,而不是尝试

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

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

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

我想我记得在querystring上传输这个变量,但我不记得确切的情况。如果我这样做了,那么可能是qs解析器吃掉了加号,而不是参数化代码。你可以检查一下

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


再次感谢所有贡献者。

a+a意味着什么?字符串文字“A+A”或表达式“A添加到”?OP可能需要SqlDbType.NVarChar或SqlDbType.VarChar或类似的。不是。文本是LOB。但是,是的,它需要显式的参数类型来完成这项工作。是的,我打算让他进行微调;)。。。我只是想看看这是否能解决一般问题。