SQL语句中的单引号处理以及模糊查询

    技术2025-06-08  22

    转帖地址:http://www.cnblogs.com/Daylight/archive/2008/10/06/1305039.html

     

    为了防止程序SQL语句错误以及SQL注入,单引号必须经过处理。有2种办法:

    1、使用参数,比如SELECT * FROM yourTable WHERE name = @name;

    在C#中使用SqlParameter parameter = new SqlParameter("@name", objValue);来添加参数,懒得写SqlDbType这东西了,因为不写也完全可以,只需要参数名和值。

    在JAVA中就是用预处理PreparedStatement来添加参数。

    2、如果不用参数,而用字符串拼接的话,单引号必须经过判断并替换,在数据库中,用2个单引号代表1个实际的单引号。所以,如果是拼接方式,需要用String.Replace("'", "''")来替换一下,将1个单引号替换为2个就没有问题了。

    再说一下C#中的模糊查询,为了避免单引号,我们使用参数的方式,下面的语句是不对的:

    SELECT * FROM yourTable WHERE name LIKE '%@name%';在这个句子中,'%@name%'被整体当作一个字符串来处理,你无论如何查询不到结果。修改一下,SELECT * FROM yourTable WHERE name LIKE @name;然后添加参数的时候这么添加:

    new SqlParameter("@name", "%" + categoryName + "%"); 这下就没问题了,正常查询,你输单引号照样查。

     

    最新回复(0)