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

preparedstatement的空指针异常

发布网友 发布时间:2022-04-10 16:55

我来回答

4个回答

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

目录

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

  • 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:24

    应该是你的sql语句有问题,你把sql.setString(1,username);
    sql.setString(2,password)移到sql=conn.prepareStatement(exe);前面去试试

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

    在conn=getConnection();后加上
    if(conn==null) {
    throw new SQLException("conn is null");
    }追问的确是getConnection()返回了空值的问题,这个该怎么解决?我单独在另一个类里测试getConnection的时候它却没有返回空值.........

    追答getConnection()应该会打印异常堆栈,你看看是哪里出错了

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

    conn为空引起的错误

    public static Connection getConnection() 去掉static 修饰符
    声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
    怎么取消微信亲情卡 米兰花冬季耐寒多少度 猫为什么喜欢咬人 看看是不是触碰到猫咪禁区了? 幼猫开始咬人是不是要磨牙了的表现 为什么刚到家的猫咪咬人 生气可导致女人8大器官受伤害 如何在windows10中打开任务管理器 windows10资源管理器怎么打开 急问!!下列汉字的构造方式"下、雨、客、武、从、荆、日、绳” 贵州黔运紫金文化传媒有限公司怎么样? 贵州黔之龙文化传媒有限公司怎么样? 002851新股票中签号码是多少 002851股票什么时候上市 听说大型合唱交响乐《人文颂》最近在巴黎演出了,非常火,为什么反映中国文化的交响乐在外国这么受欢迎呢? 手,扎刺怎么弄出来不痛? 我的手指刺到了很小很小的木刺 基本看不到 已经一天了 应该是在肉深处了 用针也挑不出来 有什么办法 小孩手指长倒刺用醋泡 真无线蓝牙耳机实测续航时间? 手被东西刺在里面拿醋逼泡可以出来吗 吉利金刚更换变速箱油多少钱? 吉利自由舰更换变速箱油需要多少钱? 龙王有几个儿子,分别叫什么? 吉利博瑞 变速箱油要多少公里换啊 还有换换要多少钱? 王者一局有几条风暴龙王 11.6英寸 x 7.8英寸是什么尺寸 11.6英寸。长是多少厘米。宽是多少厘米 吉利帝豪2018款换下变速箱油要多少钱? 《驯龙高手》中有多少只龙王? macbook air11.6寸多大 四个龙王除了“井龙王”“海龙王”还有什么? 龙族中死了多少龙王 麦格米特股票什么时候复牌 为什么频繁收到实名登记提醒短信? 为什么会收到实名认证提醒,根据湖南省*厅断卡行动最新要求,为有效保障您 我已经做了手机实名认证,为什么还有短信提醒? 实名认证提醒什么意思 执行暂存操作失败,(使用PreparedStatementCreator执行更新出错) 怎么... 菱形对角线平分一组对角是不是定理 特别急!!!菱形的一条对角线平分一组对角是定理吗 为什么说菱形对角线平分一组对角的判定方法用起来不方便,便不把它作为定理? 有一条对角线平分一组对角的平行四边形是菱形这个能当作判定直接用吗? 菱形的性质和定理 菱形的对角线有平分角吗 对角线平分每组对角的四边形是菱形。这句话对吗? 求“扬子江中断缆崩舟”的出处和意思? 菱形对角线平分对角吗? 菱形的对角线是角平分线吗 济公全传txt全集下载 对角线平分一个角的平行四边形是菱形,这个定理错吗?我被扣了5分。 “牢守寒窗空寂寞,远遁迷途返逍遥”是什么意思? 菱形的对角线互相平分是真命题吗