当前位置:酷酷问答>生活百科>No parameters defined during prepareCall

No parameters defined during prepareCall

2024-09-14 00:44:15 编辑:zane 浏览量:583

No parameters defined during prepareCall

的有关信息介绍如下:

No parameters defined during prepareCall

最近在做一个web项目中,需要使用mysql进行参数化like语句模糊查询,

简单来说,就是比如查询 '文峰区', 返回查询地址字段中包含有"文峰区"的结果,

比如这条就是一个合法的查询结果。——“【文峰区】安阳师范学院后营 ”

但是当我使用参数化查询时却总是提示

”No parameters defined during prepareCall()”

在鼓捣了N久之后终于搞定了,特此分享此经验,希望可以帮到遇到相同问题的朋友。

故障图如下图所示:

先看我按照惯例写的代码

"select * from t_jobinformation where jobAddress like '%?%' ";

运行后结果出现下图中的故障

”No parameters defined during prepareCall()”

这是因为

"select * from t_jobinformation where jobAddress like '%?%' ";

这种写法中'%?%'语句将%?%会被当做一个字符串处理,

所以无法执行参数化查询

后来我又改成

select * from t_jobinformation where jobAddress like '%"+jobAddress+"%' ";

结果成功执行了,但是这就不是参数化查询了,可能存在Sql注入危险,所以果断废弃这种方法。

但这个测试应该可以说明别的代码没有问题,问题在Sql查询语句上。

后来查了半天相关专业书籍,修改最终正确代码如下:

"select * from t_jobinformation where jobAddress like concat('%',?,'%')";

备注:

concat(var1,var2,.....)mysql中特有的拼接字符串的方式

再次部署发布运行,终于成功不报错了。

版权声明:文章由 酷酷问答 整理收集,来源于互联网或者用户投稿,如有侵权,请联系我们,我们会立即处理。如转载请保留本文链接:https://www.kukuwd.com/life/34664.html
热门文章