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)};是不是可以了?
发布评论