ASP.NET参数化模糊查询
ASP.NET参数化模糊查询一、参数化查询的原理
在使用参数化查询的情况下,数据库服务器不会将参数的内容视为SQL指令的一部份来处理,而是在数据库完成SQL指令的编译后,才套用参数运行,因此就算参数中含有恶意的指令,由于已经编译完成,就不会被数据库所运行。 有部份的开发人员可能会认为使用参数化查询,会让程序更不好维护,或者在实现部份功能上会非常不便,然而,使用参数化查询造成的额外开发成本,通常都远低于因为SQL注入攻击漏洞被发现而遭受攻击,所造成的重大损失。
二、使用参数化SQL语句进行模糊查找的正确方法:
//定义sql语句
string sql = "SELECT StudentID,StudentNO,StudentName FROM Student WHERE StudentName like @StudentName";
//给参数赋值
paramList.AddWithValue("@StudentName", "%" + strStudentName+ "%"));
三、常见的错误写法
错误做法1
string sql = "SELECT StudentID,StudentNO,StudentName FROM Student WHERE StudentName like '%@StudentName%'";
paramList.AddWithValue("@StudentName", strStudentName));
错误做法2
string sql = "SELECT StudentID,StudentNO,StudentName FROM Student WHERE StudentName like %@StudentName%";
paramList.AddWithValue("@StudentName", strStudentName));