日期:2014-05-18  浏览次数:20485 次

|M| 对SQL字符过行转换的不明白
text   =   text.Replace( "\ " ",   "" ");
text   =   text.Replace( "; ",   " ' '; ' ' ");
text   =   text.Replace( " ' ",   " ' ' ");
text   =   text.Replace( "-- ",   " ' '-- ' ' ");
这是我看别人查询数据库时对语句的转换

但是要是这样写查询的话那我如我的表
                  ID             User             Pass                              
9 -- a0486ff05530df6c 2
10 : 903f6d77e456892f 3
11 \ 9d8a121ce581499d 1
12 ' df80460f38209566 1
我要分别查出这里面的记录的话用   where   User=??
这种方法的话那不是查不出来

我个人认为是不是text   =   text.Replace( " ' ",   " ' ' ");
有这一种就行了

大家说说看法

------解决方案--------------------
用sqlcommand的参数就不用考虑这些了
------解决方案--------------------
用户名可以允许这么多怪异的字符?
------解决方案--------------------
有这样的用户名:)
------解决方案--------------------
他应该是过滤掉一些SQLSERVER的注入式攻击的作用,用sqlcommand也可以达到他的目的
------解决方案--------------------
建议用sqlcommand
------解决方案--------------------
哎 现在还在 回车键 徘徊呢 真是的 郁闷

------解决方案--------------------

------解决方案--------------------
查询的话
先把查询的条件的值也转换了,再拼sql语句。


------解决方案--------------------
注意不要循环的转化了。
比如;-> "-> &quot"这样的问题
------解决方案--------------------
防止sql注入用的,可以用代入参数而不是直接拼接sql命令。