我有这个:
string a = "a+a";
SqlCommand q = new SqlCommand("SELECT * FROM table WHERE a = @a", conn);
q.Parameters.AddWithValue("@a", a);但是参数化完全删除了a中的+,只剩下a a,而不是所需的a+a。我需要把+放在适当的位置;我只想要它转义,而不是删除。
有没有办法让C#转义+而不是擦除它?我使用的是.NET Framework2.0,没有升级的选项。
发布于 2010-09-30 05:57:16
谢谢大家。我不确定这里到底发生了什么,但我最终只是在存储之前将所有+号都替换为零。
我想我记得在querystring中传递了这个变量,但是我记不清了。如果我这样做了,那么加号很可能被qs解析器吃掉了,而不是参数化代码。你可能会想要检查一下。
我没有尝试指定数据类型,因为我很着急,用+替换不会被吃掉的东西(如0)是最快的解决方案。
再次感谢所有的贡献者。
发布于 2010-09-17 12:55:51
您需要显式设置参数的数据类型
发布于 2010-09-17 13:01:29
而不是尝试
q.Parameters.Add( "@a", SqlDbType.Text ).Value = a;只要确保这就是问题所在
https://stackoverflow.com/questions/3732077
复制相似问题