2023年6月21日发(作者:)

sql模糊查询传递参数按常规的思路,我们会这样写String searchName ="Sam";String strSql = "select * FROM Table1 where Name

like '%@Name%' ";SqlParameter[] parameters = {new SqlParameter("@Name",

searchName)};但结果是查询不到结果,跟踪代码也没有发现错误,⼜不想⽤字符串拼接的⽅式(防⽌攻击)。于是跟踪了Sql的执⾏,发现问题在于Sql给参数⾃动添加了单引号。实际上在Sql,将like的代码解析成为了

like '%'Sam'%' ",所以,你怎么查也都得不到想要的结果。据此,我们可以将代码改成:String searchName ="Sam";String strSql = "select * FROM Table1 where Name

like @Name ";searchName = "%"+searchName+"%";

//注意不⽤加单引号,传参到Sql语句中会⾃动添加SqlParameter[] parameters = {new

SqlParameter("@Name", searchName)};是不是可以了?

2023年6月21日发(作者:)

sql模糊查询传递参数按常规的思路,我们会这样写String searchName ="Sam";String strSql = "select * FROM Table1 where Name

like '%@Name%' ";SqlParameter[] parameters = {new SqlParameter("@Name",

searchName)};但结果是查询不到结果,跟踪代码也没有发现错误,⼜不想⽤字符串拼接的⽅式(防⽌攻击)。于是跟踪了Sql的执⾏,发现问题在于Sql给参数⾃动添加了单引号。实际上在Sql,将like的代码解析成为了

like '%'Sam'%' ",所以,你怎么查也都得不到想要的结果。据此,我们可以将代码改成:String searchName ="Sam";String strSql = "select * FROM Table1 where Name

like @Name ";searchName = "%"+searchName+"%";

//注意不⽤加单引号,传参到Sql语句中会⾃动添加SqlParameter[] parameters = {new

SqlParameter("@Name", searchName)};是不是可以了?