问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

preparedstatement 批处理 问题(只插入了一条)

发布网友 发布时间:2022-04-10 17:01

我来回答

5个回答

懂视网 时间:2022-04-10 21:23

目录

  • 文章背景
  • 目录
  • 问题分析
  • 问题解决
  • 说明
  • 参考文章
  • 版本记录

  • layout: default
    title: PreparedStatementSQLException
    category: [Technology, Bug]
    comments: true
    ---

    文章背景

    在写一些入库操作时候,想动态的设置一些表的名字,有几种想法,除了通过解析本地xml,想尝试通过参数直接传入,但是出现了报错。

    目录

    问题分析

    错误的详情如下:

    2019-03-01 16:45:39,387 INFO [cn.naritech.im.DataServices]:32 - user pass 78125000 15min ForecastResultParameters [dataType=ActivePowerProduction, optional1=o1, optional2=o2]
    java.sql.SQLException: 无效的列索引
     at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
     at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
     at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:208)
     at oracle.jdbc.driver.OraclePreparedStatement.setStringInternal(OraclePreparedStatement.java:5265)
     at oracle.jdbc.driver.OraclePreparedStatement.setString(OraclePreparedStatement.java:5257)
     at com.narisq.ewis.dao.DataServiceDAO.getActivePowerProduction(DataServiceDAO.java:74)
     at cn.naritech.im.DataServices.GetPlantForecastData(DataServices.java:61)
     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:483)
     at org.apache.axis2.rpc.receivers.RPCUtil.invokeServiceClass(RPCUtil.java:194)
     at org.apache.axis2.rpc.receivers.RPCMessageReceiver.invokeBusinessLogic(RPCMessageReceiver.java:98)
     at org.apache.axis2.receivers.AbstractInOutMessageReceiver.invokeBusinessLogic(AbstractInOutMessageReceiver.java:40)
     at org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:96)
     at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:145)
     at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:275)
     at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:120)
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
     at com.narisq.ewis.xss.XssFilter.doFilter(XssFilter.java:24)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
     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:128)
     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
     at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
     at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
     at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
     at java.lang.Thread.run(Thread.java:745)
    
    2019-03-01 16:50:35,912 INFO [cn.naritech.im.DataServices]:32 - user pass 78125000 15min ForecastResultParameters [dataType=ActivePowerProduction, optional1=o1, optional2=o2]
    java.sql.SQLException: ORA-00903: 表名无效
    
     at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
     at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
     at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
     at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743)
     at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:213)
     at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:796)
     at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1031)
     at oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:836)
     at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1124)
     at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3285)
     at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3329)
     at com.narisq.ewis.dao.DataServiceDAO.getActivePowerProduction(DataServiceDAO.java:75)
     at cn.naritech.im.DataServices.GetPlantForecastData(DataServices.java:61)
     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:483)
     at org.apache.axis2.rpc.receivers.RPCUtil.invokeServiceClass(RPCUtil.java:194)
     at org.apache.axis2.rpc.receivers.RPCMessageReceiver.invokeBusinessLogic(RPCMessageReceiver.java:98)
     at org.apache.axis2.receivers.AbstractInOutMessageReceiver.invokeBusinessLogic(AbstractInOutMessageReceiver.java:40)
     at org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:96)
     at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:145)
     at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:275)
     at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:120)
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
     at com.narisq.ewis.xss.XssFilter.doFilter(XssFilter.java:24)
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
     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:128)
     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
     at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
     at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
     at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
     at java.lang.Thread.run(Thread.java:745)
    

    问题解决

    对比不报错的代码,发现是因为表名的原因,这里因为涉及到内部数据库构成,就不展示代码了。

    通过搜索知道PreparedStatement不支持动态设置表的名字和列的名字的缘故,因此换用其他的方法解决。

    说明

    欢迎评论,欢迎指正,转载也请注明出处.

    参考文章

    PreparedStatement不能动态设置表名和列名

    版本记录

    20190301 完成文章

    PreparedStatementSQLException

    标签:drive   完成   wrap   方法   cep   oracle   ada   exce   toc   

    热心网友 时间:2022-04-10 18:31

    你第一个 pstmt AddBatch 以后,又重新建立了一个 pstmt ,最后的那个pstmt.executeBatch(); 执行了,前一个已经没有引用可以被垃圾回收了,肯定不会插入了
    别用一个PreparedStatement了,使用两个 PreparedStatement ,每一个放一条SQL语句,再试一下

    热心网友 时间:2022-04-10 19:49

    个人觉得,一个PreparedStatement里只能放一条批处理的sql,你可以将你的两条sql放到一个过程中,然后处理!而且你只执行一次,根本用不到批处理嘛!

    热心网友 时间:2022-04-10 21:23

    咱们还是分成3条语句写吧。写在一起,问题不好调试

    热心网友 时间:2022-04-10 23:15

    为什么不用一条sql语句完成呢追问传入的参数个数不一致啊

    声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
    这种情况需要准备什么样的证据才能保证维权成功,关于个人知识产权方面... 侵犯著作权罪成立的条件是什么 网站被抄袭,怎么办?官网网页内容抄袭引发的法律问题 版权申请哪家性价比高? 著作权侵权损害如何赔偿 瓷砖划痕怎么处理方法 地板砖划痕怎么去除十种方法 关于梦幻西游转区的一些问题。懂的进。 茶叶泡水发苦的原因茶叶泡水发苦是什么原因 ...那又怎么样?从化学角度讲不也是那种分子起的作 紫微斗数的命盘大师们给看看 求解 紫微斗数的来一起交流研究下此盘,都说说你们的看法,明明是三奇加会格,双禄朝桓格,可是命宫的对宫有煞 我要《魂断蓝桥》的完全剧本 懂紫微斗数的来一起交流研究下此盘,说说你们的看法,明明是三奇加会格,双禄朝桓格,机月同梁格,文梁振 2008年中考英语试题 里的完型和短文翻译 1988年四月七日辰时,求解紫薇命盘,最好有流限运,谢谢大家~ 求20篇英语阅读练习 雄宿朝垣格的名人 2009年3月14号浙江高考英语(pets2)听力答案 高中英语作文:More care for others 一个人命里有 日月并明格,文星拱命格,双禄朝垣格,三奇嘉会格,空劫夹命格,文星遇夹格。。对这个人 双禄朝垣格 日照雷门格,我的命盘两个格局怎么回事? 权禄巡逢格,活到现在也没见的怎么好过.求解 紫微斗数求高手解盘 here are our,on pet show 怎么读 双禄朝恒,魁钺夹命是什么意思 hereareourpets怎么读 双禄朝垣格为什么好 有出租车从业资格证是否可以随便帮人代班 已有,怎么开微店 一件黑色的衣服掉色,用什么醋配清水洗涤 肠胃不好能喝普洱茶嘛?如果可以的话 那怎样挑选上等优质的茶呢? 胃溃疡能不能喝熟普洱?拜托各位大神 一个男生主动加了你微信但是一直不讲话是为什么 家人介绍的男生加了微信不说话 男孩子加了你微信没说话你应该主动说话吗 二胎产假最新规定是怎样的 全脑开发是*吗?学费一万七千八,说是能蒙眼识字,看书,等等。 把眼晴蒙牢可以看到东西这种教育是真的吗? 脑科学开智机是什么耳机,原理是什么,适合哪个年龄段,效果如何,有副作用吗,能蒙眼看物是真的吗? 已知道换热器换热量计算公式A=Q/K(Tr-△t),求其 请问针对小学生的全脑开发课程是真是假?学生上课初期就可以蒙眼辨色,蒙眼识字,不知道是什么猫腻! 关于线性代数的问题。为什么Tr(A)=Tr(T^-1AT)? 中央二台揭秘全脑骗局。 右脑骗局发现后有谁来管 a,b为三维非零列向量,(a,b)=3,A=a(b)^T 求迹trA),为何tr(A)=(a,b) 右脑开发是真的假的? aderhsitr-t英语是什么意? 教育局对于所谓的右脑开发,速读,超强记忆力。开发间脑,蒙眼看书。 到底有没*抵制的啊。毕竟没官方 爱迪凯特全脑开发培养了很多学霸是真的吗? com.microsoft.sqlserver.jdbc.SQLServerException: 没有为参数号 1 设置值。