起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6568|回复: 2

[结贴] java.sql.SQLException: Can't find local placeholder mapping for parameter named

[复制链接]

106

主题

294

帖子

801

积分

高级会员

Rank: 4

积分
801
QQ
发表于 2017-4-25 16:56:00 | 显示全部楼层 |阅读模式
版本: 其它(帖子中说明) 小版本号: 3.6
数据库: MySQL 服务器操作系统: Windows 应用服务器: Tomcat
客户端操作系统: Windows 其它 浏览器: Chrome
调用一个存储过程,执行这句的时候报错了proc.setString(p1,v1);



p1,v1的值已经拿到了, p1 就是存储过程的参数名 province
proc 是 java.sql.CallableStatement

报错信息:
java.sql.SQLException: Can't find local placeholder mapping for parameter named "province".
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:998)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:937)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:872)
        at com.mysql.jdbc.CallableStatement.getNamedParamIndex(CallableStatement.java:1456)
        at com.mysql.jdbc.CallableStatement.setObject(CallableStatement.java:2159)
        at org.apache.tomcat.dbcp.dbcp.DelegatingCallableStatement.setObject(DelegatingCallableStatement.java:246)
        at org.apache.tomcat.dbcp.dbcp.DelegatingCallableStatement.setObject(DelegatingCallableStatement.java:246)
        at common.storedProcedure.SPCommon.callSP(SPCommon.java:59)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:497)
        at com.justep.system.action.Engine.invokeActions(Native Method)
        at com.justep.system.action.Engine.invokeActions(Unknown Source)
        at com.justep.business.server.BusinessServer.doAction(Unknown Source)
        at com.justep.business.server.BusinessServer.doExcute(Unknown Source)
        at com.justep.business.server.BusinessServer.excute(Unknown Source)
        at com.justep.business.server.BusinessServer.excute(Unknown Source)
        at com.justep.business.server.BusinessServerServlet.execService(Unknown Source)
        at com.justep.business.server.BusinessServerServlet.service(Unknown Source)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
        at com.justep.x.bs.BusinessServerServlet.service(Unknown Source)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
        at java.lang.Thread.run(Thread.java:745)


91

主题

13万

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
36067
发表于 2017-4-25 17:11:13 | 显示全部楼层
java.sql.SQLException: Can't find local placeholder mapping for parameter named "province".
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:998)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:937)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)


这个是sql的标准报错,可以到网上查找相关的错误原因
远程的联系方法QQ1392416607,添加好友时,需在备注里注明其论坛名字及ID,公司等信息
发远程时同时也发一下帖子地址,方便了解要解决的问题  WeX5教程  WeX5下载



如按照该方法解决,请及时跟帖,便于版主结贴
回复 支持 反对

使用道具 举报

106

主题

294

帖子

801

积分

高级会员

Rank: 4

积分
801
QQ
 楼主| 发表于 2017-4-28 11:08:51 | 显示全部楼层
已经解决了,是自己的代码写的有问题
String callStr = "{CALL "+ spName +"()}"; //无参
java.sql.CallableStatement proc = conn.prepareCall(callStr);
因为下面加了if条件,if 里面动态构造参数个数,忘了在if里面 创建新的带参的回调连接了

谢谢,可以结帖了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-11-24 06:32 , Processed in 0.105949 second(s), 25 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表